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