目录

  • 背景
  • 简介
  • 测试
  • 结论

背景

一直以来,python的web框架给别人的感觉就是: 一个能打的都没有。社区也在不断的努力,特别在 asyncio 爆发之后,出现了一些新的异步框架,比如sanic,比如vibora,相比传统的flask, django,这些新的框架相对成熟了很多,而且在性能上已经有长足的进步了,和node, golang ,已经有一战之力了,大家可以在工作之余,实验性的去尝试一下,本次我就从自己工作之余的性能测试,来点评一下各个新框架的使用体验和性能对比。

简介

sanic

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/