# tornado-uvloop使用

tornado-uvloop使用

简单言之
asyncio 是Python3.4 之后引入的标准库的,这个包使用事件循环驱动的协程实现并发。
uvloop 是 基于libuv 代替 asyncio 内事件循环的库
livbuv 则是nodejs使用的io库
github具体地址:https://github.com/MagicStack/uvloop
uvloop官方文档:https://uvloop.readthedocs.io/user/index.html

#这里是实现策略转化,也可以直接安装tornadouvloop包,这里这是把内容提出来了
#这里是我新建的文件 tornado_uvloop.py 文件

from tornado.platform.asyncio import BaseAsyncIOLoop
import uvloop
import asyncio

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
#这里为启动的文件

import tornado.web      #web框架模块
import tornado.ioloop       #核心IO循环模块
import tornado.httpserver       #tornado的HTTP服务
import tornado.options      #全局参数定义,存储和转化模块
import config     #导入自定义配置的py文件
import application  #导入自定义的应用程序模块
from tornado_uvloop import TornadoUvloop  #这里导入 为上面写的 tornado_uvloop.py 文件
"""
#server
    服务设置
"""

if __name__=="__main__":
    app = application.Application()                     #处理请求服务
    httpServer = tornado.httpserver.HTTPServer(app)     #设置HTTP服务器
    httpServer.bind(config.options["port"])      #绑定在指定端口
    httpServer.start(1)                         #线程数
    
    tornado.ioloop.IOLoop.configure(TornadoUvloop)		#配置文件,启用uvloop策略
    tornado.ioloop.IOLoop.current().start()     #启动

其他uvloop简单实用:
替换asyncio的事件策略,

import asyncio
import uvloop
asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())

# 这样可以让 asyncio.get_event_loop() 返回一个 uvloop 的实例

你还可以显式的创建一个uvloop实例,通过调用uvloop.new_event_loop()。

import asyncio
import uvloop
loop = uvloop.new_event_loop()
asyncio.set_event_loop(loop)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值