Доброго времени суток, можете подсказать, почему торнадо лочит IO при выполнении следующего кода:
import time
import tornado.web
from tornado.ioloop import IOLoop
from tornado import gen
from tornado.concurrent import run_on_executor
from concurrent.futures import ThreadPoolExecutor
MAX_WORKERS = 4
class TestHandler(tornado.web.RequestHandler):
executor = ThreadPoolExecutor(max_workers=MAX_WORKERS)
@run_on_executor
def background_task(self, i):
""" This will be executed in `executor` pool. """
time.sleep(10)
return i
@tornado.gen.coroutine
def get(self):
""" Request that asynchronously calls background task. """
print('%s news handler accept' % time.time())
res = yield self.background_task(time.time())
self.write(str(res))
application = tornado.web.Application([
(r"/", TestHandler),
])
application.listen(8888)
IOLoop.instance().start()
про gen.sleep знаю, но как заставить этот код не блокировать приложуху?