高性能 Python web 框架 Blacksheep 初见
2022/12/29 4:24:07
本文主要是介绍高性能 Python web 框架 Blacksheep 初见,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Python web 框架性能对比
一说到 Python 大家多半最先想到的就是它代码的简洁与性能的孱弱。
在我所使用体验过的 Python web 框架中 Tornado 性能最好,Flask 次之,Django 最差;
但是从开发的速度与后期维护的成本来说,它们的排名又应该反过来。
近些年来又有很多后起之秀,比如:sanic 和 fastapi,不由得让人好奇究竟哪一个才是性能最好的那个。
我在这里帮大家找到了这样一个仓库,其作者在 Docker 的基础上对主流的 Python web 框架进行了基准测试和对比,
从结果来看获得第一名的是一个名不见经传的叫:Blacksheep 的框架。
我后来 fork 了此 repo 并更新了其中所有框架到最新版本后,测试出来的第一名依然是它。
所以我想写一篇文章记录并介绍下它。
klen/py-frameworks-bench: Another benchmark for some python frameworks (github.com)
Blacksheep
项目repo: Neoteroi/BlackSheep: Fast ASGI web framework for Python (github.com)
项目文档:BlackSheep (neoteroi.dev)
作者介绍此项目的文章:Presenting BlackSheep, one of today’s fastest web frameworks for Python – Roberto Prevato – Applications architect, DevOps, graphic designer, metal head passionate of philosophy.
据作者所说,他是受 Flask and ASP.NET Core 启发开发了 Blacksheep,其性能好的原因主要有三点:
- Blacksheep 使用了 Cython 编写了部份核心逻辑,也使用了 https://github.com/nodejs/http-parser 这样的 Cython 库,使得框架的性能比使用纯 Python 的框架要好。
- Blacksheep 使用 asyncio,这就使得它可以兼容并使用建立在 uvloop 上的 uvicorn,得以享受到其加成。
- Blacksheep 没有跟随 ASGI 使用 Python 内置的 Dict 和 Tuple 类型,而是使用了 Cython 的 静态类型。
与之类似的是 Vibora,这个框架也使用了 Cython 以获得最佳的性能,但是该框架牺牲了代码的简洁与可读性:
####################################################### # This is a very sensitive file. # The whole framework performance is highly impacted by the implementations here. # There are a lot of "bad practices" here, super calls avoided, duplicated code, early bindings everywhere. # Tests should help us stay calm and maintain this. # Raw ** performance ** is our ** main goal ** here. #######################################################
而 Blacksheep 则没有,尽管使用了 Cython 会导致开者们更难给项目贡献代码,但它的代码依然干净且可读性好。并且由于其建立在 Flask 之上,熟悉 Flask 的朋友使用起来能够很快上手。
后记
Blacksheep 做为目前 Python web 框架中最快的一个,它还蕴藏许多强大的功能,比如:依赖注入、类型绑定,中间件,扩展插件等等。留待我的下篇文章再继续介绍。
这篇关于高性能 Python web 框架 Blacksheep 初见的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-23使用python部署一个usdt合约,部署自己的usdt稳定币
- 2024-12-20Python编程入门指南
- 2024-12-20Python编程基础与进阶
- 2024-12-19Python基础编程教程
- 2024-12-19python 文件的后缀名是什么 怎么运行一个python文件?-icode9专业技术文章分享
- 2024-12-19使用python 把docx转为pdf文件有哪些方法?-icode9专业技术文章分享
- 2024-12-19python怎么更换换pip的源镜像?-icode9专业技术文章分享
- 2024-12-19Python资料:新手入门的全面指南
- 2024-12-19Python股票自动化交易实战入门教程
- 2024-12-19Python股票自动化交易入门教程