私は竜巻とPythonの初心者です。数日前、私は非ブロッキングの残りのAPIを書くようになりましたが、私はまだ使命を達成できませんでした。このエンドポイント「localhost:8080/async」に同時に2つのリクエストを送信すると、2番目のリクエストは20秒後に応答します。それは私が間違っていることを説明している。Python Tornado Gen.coroutineブロックリクエスト
MAX_WORKERS = 4
class ASYNCHandler(tornado.web.RequestHandler):
executor = ThreadPoolExecutor(max_workers=MAX_WORKERS)
counter = 0
def pow_task(self, x, y):
time.sleep(10)
return pow(x,y)
async def background_task(self):
future = ASYNCHandler.executor.submit(self.pow_task, 2, 3)
return future
@gen.coroutine
def get(self, *args, **kwargs):
future = yield from self.background_task()
response= dumps({"result":future.result()}, default=json_util.default)
print(response)
application = tornado.web.Application([
('/async', ASYNCHandler),
('/sync', SYNCHandler),
], db=db, debug=True)
application.listen(8888)
tornado.ioloop.IOLoop.current().start()