tornado使用uvloop执行

Posted 75 months ago uvloop python nodejs 异步 事件 asyncio

asyncio 是Python3.4 之后引入的标准库的,这个包使用事件循环驱动的协程实现并发。

uvloop 是 基于libuv 代替 asyncio 内事件循环的库

livbuv 则是大名鼎鼎的nodejs使用的io库

= =

自打知道这玩意就想用上

上代码




import tornado.ioloop
import tornado.web
from .router import Url
from core.service import log
#入口文件
settings = {
    'template_path': 'views',
    'static_path': 'static',
    'static_url_prefix': '/static/',
    "cookie_secret" : "61oETzKXQAGaYdkL5gEmGeJJFuYh7EQnp2XdTP1o/Vo=",
    "xsrf_cookies": False,
}

import uvloop

from tornado.platform.asyncio import BaseAsyncIOLoop


class TornadoUvloop(BaseAsyncIOLoop):

    def initialize(self, **kwargs):
        loop = uvloop.new_event_loop()
        try:
            super(TornadoUvloop, self).initialize(
                loop, close_loop=True, **kwargs)
        except Exception:
            loop.close()
            raise

    @staticmethod
    def main(port):
        application = tornado.web.Application(
            Url,
            **settings,)
        application.listen(port)
        tornado.ioloop.IOLoop.configure(TornadoUvloop)
        tornado.ioloop.IOLoop.current().start()

点击评论