放下你那python的古老异步框架吧

上古时代的人们会使用tornado等异步框架来提高并发性能。

我以前则采用gevent的协程方式来提供并发能力。

 

现在有更快的汽车。

如果只知道python新版本的async/await的用法,也是不够快的。

python默认采用asyncio的事件loop,如何让它更快呢?

 

采用uvloop取代python默认的asyncio.

为什么uvloop可以更快?

因为它采用了更快的cython编写(不是cpython),cython会将python转为c级别。

并基于libuv构建(用python给libuv封了一层)。而libuv则是高并发的nodejs的异步IO库,性能非常高。

推荐阅读:http://magic.io/blog/uvloop-blazing-fast-python-networking/

 

还能更快吗?可以!

我们发现python的常用http解析器aiohttp对http的解析很慢!

这里,采用快的多的httptools取代aiohttp。

为什么httptools会更快?

因为这是高性能的nodejs所使用的http解析器(采用c开发),性能会提高很多。

 

现在python最高性能的框架uvicorn,核心就是基于上面的uvloop和httptools 2个发动机改造而成的,是python最快的框架。

(sanic是uvloop+ujson,性能差于uvicorn)

各类框架的性能比较:https://www.techempower.com/benchmarks/#section=data-r19

 

为了易用性,有很多方法使用uvicorn。

最简单的是使用gunicorn,和以前的差别是,worker类型选择uvicorn,而不是上古的gevent等异步worker。

另一种方法是使用基于uvicorn二次开发的框架。

这些框架的选择,可以参考:https://fastapi.tiangolo.com/benchmarks/(当然fastapi自己出品,当然会说自己好,但是最近fastapi的增长是非常快的)

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值