[后端] python下的web framework大比拼
目录
- 背景
- 简介
- 测试
- 结论
背景
一直以来,python的web框架给别人的感觉就是: 一个能打的都没有。社区也在不断的努力,特别在 asyncio 爆发之后,出现了一些新的异步框架,比如sanic,比如vibora,相比传统的flask, django,这些新的框架相对成熟了很多,而且在性能上已经有长足的进步了,和node, golang ,已经有一战之力了,大家可以在工作之余,实验性的去尝试一下,本次我就从自己工作之余的性能测试,来点评一下各个新框架的使用体验和性能对比。
简介
sanic
- 地址: https://github.com/huge-success/sanic
- star: 12413
- 简介: Async Python 3.6+ web server/framework | Build fast. Run fast. https://sanicframework.org/
sanic 社区活跃,并且在写法上和flask 非常接近,这就意味着之前flask api项目可以很顺利的迁移过来,另外,由于加入了异步的特性,在与数据库交互的一些操作,也可以使用异步的一些写法,对于追求性能的同学来学,是非常好的选择
fastapi
- 地址: https://github.com/tiangolo/fastapi
- star: 3383
- 简介: FastAPI framework, high performance, easy to learn, fast to code, ready for production https://fastapi.tiangolo.com/
python3下非常优秀api框架,最最让我心动的是,当你写好api之后,它会自动生成swagger doc文档, api的使用方法,参数说明一看就知道,这可真是让人心动的特性,不过api的部署需要借助高性能的uvicorn服务器
japronto
- 地址:https://github.com/squeaky-pl/japronto
- star: 7364
- 简介: Screaming-fast Python 3.5+ HTTP toolkit integrated with pipelining HTTP server based on uvloop and picohttpparser
性能极致的佳作,底层是用C实现的,先上图看看作者的测试结果
这个结果真是让人流口水,对于这个结果,本人在ubuntu 16.04的服务器稳定了跑了两周,使用ab test 定时发送10000请求,轻松处理,稳定运行,作者到目前为止都没有放开正式的生产版本意思,作者的活跃度也不高,如果不懂一些C的基础,还是不要轻易用于大型的项目。
vibora
- 地址:https://github.com/vibora-io/vibora
- star: 5238
- 简介: Fast, asynchronous and elegant Python web framework.
上手方便,文档齐全,整体性能中等偏上,就是社区活跃度不高
结论
本次只是从自己平时使用的新框架中选了一些来做点评,其实还有一些其它的框架暂时没有用过,比如quart,apistar, 这些框架都有自己的新特性,需要我们结合具体的使用场景,去实际使用,性能并不是一切,生态,上手程度,文档的齐全度,社区活跃度都是综合考量的因素,下面这张图是第三方测试结构对于python下的web framework 的一些测试
参考:https://www.techempower.com/benchmarks/
- 原文作者:大鱼
- 原文链接:https://brucedone.com/archives/1477/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. 进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。