Вот так выглядит мой код (исключая некоторые детали, которые на самом деле не актуальны)
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, и поэтому эта ошибка видна. Я пытался прочитать документацию по торнадо и видел в Интернете другие ресурсы, пытающиеся решить ту же ошибку, но не смог найти ничего полезного.
Может кто-нибудь помочь мне?