Asynchronous 具有异步返回的异步tornado服务器

Asynchronous 具有异步返回的异步tornado服务器,asynchronous,server,tornado,Asynchronous,Server,Tornado,这似乎不起作用,报告错误如下: 第二次自我睡眠(1): TypeError:“Future”对象不可编辑 如何正确实现具有异步返回的异步tornado服务器?非常感谢 class NoBlockingHnadler(tornado.web.RequestHandler): executor = ThreadPoolExecutor(4) @run_on_executor def sleep(self, second): #time.sleep(secon

这似乎不起作用,报告错误如下:

第二次自我睡眠(1): TypeError:“Future”对象不可编辑

如何正确实现具有异步返回的异步tornado服务器?非常感谢

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()
from tornado.ioloop import IOLoop


def sleep(second):
    for i in range(5):
        time.sleep(second)
        return i

class NoBlockingHnadler(tornado.web.RequestHandler):

    async def get(self):

        result = await IOLoop.current().run_in_executor(None,sleep,*(1))

        for second in result:
            print(second)
            self.write("noBlocking Request: {}\n".format(second))
            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()