[后端] 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/
    《[后端] python下的web framework大比拼》

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/
    《[后端] python下的web framework大比拼》
    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

python下的性能极致的佳作,底层是用C实现的,先上图看看作者的测试结果
《[后端] python下的web framework大比拼》
这个结果真是让人流口水,对于这个结果,本人在ubuntu 16.04的服务器稳定了跑了两周,使用ab test 定时发送10000请求,轻松处理,稳定运行,但作者到目前为止都没有放开正式的生产版本意思,作者的活跃度也不高,如果不懂一些C的基础,还是不要轻易用于大型的项目。

vibora

  • 地址:https://github.com/vibora-io/vibora
  • star: 5238
  • 简介: Fast, asynchronous and elegant Python web framework.
    《[后端] python下的web framework大比拼》
    上手方便,文档齐全,整体性能中等偏上,就是社区活跃度不高

结论

本次只是从自己平时使用的新框架中选了一些来做点评,其实还有一些其它的框架暂时没有用过,比如quart,apistar, 这些框架都有自己的新的特性,需要我们结合具体的使用场景,去实际使用,性能并不是一切,生态,上手程度,文档的齐全度,社区活跃度都是综合考量的因素,下面这张图是第三方测试结构对于python下的web framework 的一些测试
《[后端] python下的web framework大比拼》
参考:https://www.techempower.com/benchmarks/

点赞