gpt4 book ai didi

python - 运行 Tornado 的多个实例会出现 ioloop is already running 错误

转载 作者:行者123 更新时间:2023-12-02 08:06:35 25 4
gpt4 key购买 nike

这就是我的代码的样子(排除了一些不相关的细节)

from multiprocessing.pool import ThreadPool as Pool

class GetUsers(BaseTask):
def foo(self):
pool = Pool()
try:
pool.map(self.bar, users)
finally:
pool.close()
pool.join()

def bar(self, users):
uuid = users[0]
ioloopInstance = ioloop.IOLoop().instance()
isInExperiment = self.isInExperiment(uuid, ioloopInstance)
log.info(str(uuid)+str(isInExperiment))

def isInExperiment(self, uuid, ioloop):
isInExpTag_response =ioloop.run_sync(lambda: self.
fetch_isInExperiment_response(uuid))
if len(isInExpTag_response.body) > 0:
return True
return False

@gen.coroutine
def fetch_isInExperiment_response(self, uuid):
response = yield baz
raise gen.Return(response)

当我运行此命令时,出现 ioloop is already running 错误。我觉得这是因为正在运行的多个进程正在尝试访问 Tornado 的同一个实例,因此会出现此错误。我尝试阅读 Tornado 的文档,并在网上看到其他资源试图解决相同的错误,但找不到任何有用的东西。

有人可以帮帮我吗?

最佳答案

这在我改变后有效from multiprocessing.pool import ThreadPool as Poolfrom multiprocessing import Pool

我曾使用线程池作为修复 Can't pickle <type 'instancemethod'> when using multiprocessing Pool.map() 的解决方法这个错误,但继续使用此处定义的 copy_reg https://laszukdawid.com/2017/12/13/multiprocessing-in-python-all-about-pickling/解决整个问题。

关于python - 运行 Tornado 的多个实例会出现 ioloop is already running 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60776013/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com