【问题标题】:Asynchronous tornado server with asynchronous returns具有异步返回的异步龙卷风服务器
【发布时间】:2020-01-13 04:51:53
【问题描述】:
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' 对象不可迭代

如何正确实现异步返回的异步龙卷风服务器?非常感谢。

【问题讨论】:

    标签: asynchronous server tornado


    【解决方案1】:
    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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-03
      • 1970-01-01
      相关资源
      最近更新 更多