class NoBlockingHnadler(tornado.web.RequestHandler):
executor = ThreadPoolExecutor(4)
@run_on_executor
def sleep(self, second):
#time.sleep(second)
#return second
for i in range(5):
time.sleep(second)
yield i
@gen.coroutine
def get(self):
#second = yield self.sleep(1)
#self.write("noBlocking Request: {}".format(second))
for second in self.sleep(1):
print(second)
self.write("noBlocking Request: {}\n".format(second))
self.flush()
self.finish()
def make_app():
return tornado.web.Application([
(r"/noblock", NoBlockingHnadler),
], autoreload=True)
if __name__ == "__main__":
app = make_app()
app.listen(8518)
tornado.ioloop.IOLoop.current().start()
Это, похоже, не работает, что сообщило об ошибке следующим образом:
за секунду в self.sleep (1): TypeError: объект 'Future' не повторяется
Как правильно реализовать асинхронный сервер торнадо с асинхронным возвратом? Большое спасибо.