tornado多进程模式问题

昨天尝试使用tornado的多进程运行模式,但是报错了,如下:

RuntimeError: Cannot run in multiple processes: IOLoop instance has already been initialized. You cannot call IOLoop.instance() before calling start_processes()

一开始通过网上搜索了解,可能原因是在application创建时参数debug设置为了True,或者autoreload设置为True,但是我都设置为False还是不行,最后在stackoverflow上面看的一篇相关的问题贴(地址:run-multiple-tornado-processess),从中发现一个大佬的话,他提到了其他可能的原因,原文是:

其中包括我自己使用的AsyncHTTPClient客户端,我是在自己的RequestHandler类中作为类属性初始化的,这样在server.start()的时候这个客户端也初始化了,按照上面大佬的说法也会导致事件循环初始化,以致于后面说IOLoop已经初始化的报错提示。所以后面我将初始化放在了RequestHandler类的initialize方法里面时就可以了,但是我想是不是这个方法会在每次有请求过来的时候都会初始化一次,这样不是很操蛋的事吗,所以我直接在server.start()之后直接赋值给RequestHandler类属性方式来实现,这样只需要初始化一次就好了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值