【发布时间】:2016-10-16 12:28:21
【问题描述】:
我是龙卷风和蟒蛇的新手。几天前我开始写一个非阻塞的rest api,但我还不能完成任务。当我同时向此端点“localhost:8080/async”发送两个请求时,第二个请求会在 20 秒后响应!这说明我做错了什么。
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()
【问题讨论】:
标签: python tornado python-3.5