zoukankan      html  css  js  c++  java
  • tornado中使用python3原生事件循环asyncio

    如果使用tornado自带的事件循环,那么许多基于asyncio的第三方包可能用不了,比如aioredis,tornado中使用asyncio的两种方式:

    一、第一种方式是通过 AsyncIOMainLoop,但必须显示的调用asyncio的事件循环

    from tornado.platform.asyncio import AsyncIOMainLoop
    import asyncio
    
    
    def main():
        AsyncIOMainLoop().install()
     
        port = os.environ.get("PORT", 8080)
        app = Application([
            url(r"/", MainHandler),
            (r'/ws', WSHandler),
            (r'/static/(.*)', StaticFileHandler, {'path': "."})
        ])
        print("Starting server at port: %s" % port)
        app.listen(port)
        asyncio.get_event_loop().run_forever()
    

    二、第二种比较适合tornado风格创建事件循环的方式,可读性更强

    from tornado.ioloop import IOLoop
    
    
    class MainHandler(tornado.web.RequestHandler):
        async def get(self):
            await go()
            self.write("Hello, world")
    
    
    def make_app():
        IOLoop.configure('tornado.platform.asyncio.AsyncIOLoop')
        return tornado.web.Application([
            (r"/", MainHandler),
        ])
    
    
    if __name__ == "__main__":
        app = make_app()
        app.listen(8888)
        IOLoop.instance().start()
    

      

  • 相关阅读:
    IPSec (一)
    python 面向过程和面向对象
    一键修改 yum 源为 aliyun 阿里源 Shell 脚本
    第11组Alpha冲刺(6/6)
    第11组Alpha冲刺(5/6)
    第11组 Alpha冲刺(4/6)
    第11组Alpha冲刺(3/6)
    第11组 Alpha冲刺 (2/6)
    第11组 Alpha冲刺 (1/6)
    第11组(73)需求分析报告
  • 原文地址:https://www.cnblogs.com/liown/p/9927879.html
Copyright © 2011-2022 走看看