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()
    

      

  • 相关阅读:
    Windows网络编程经验小结
    异步Socket服务器与客户端
    用C#实现C/S模式下软件自动在线升级
    Linux 安装字体
    word 生成目录
    Linux sar使用
    yum 使用说明
    HASH JOIN算法
    row cache lock
    cursor: pin S
  • 原文地址:https://www.cnblogs.com/liown/p/9927879.html
Copyright © 2011-2022 走看看