乐趣区

关于python:高性能-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,其性能好的起因次要有三点:

1. Blacksheep 应用了 Cython 编写了部份外围逻辑,也应用了 https://github.com/nodejs/http-parser  这样的 Cython 库,使得框架的性能比应用纯 Python 的框架要好。2. Blacksheep 应用 asyncio,这就使得它能够兼容并应用建设在 uvloop 上的 uvicorn,得以享受到其加成。3. 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 框架中最快的一个,它还蕴藏许多弱小的性能,比方:依赖注入、类型绑定,中间件,扩大插件等等。留待我的下篇文章再持续介绍。

这是我的微信公众号,感兴趣的敌人能够关注下,后续会公布更多对于开发的乏味干货😃

本文由博客一文多发平台 OpenWrite 公布!

退出移动版