你好,我是坚持分享干货的 EarlGrey,翻译出版过《Python编程无师自通》、《Python并行计算手册》等技术书籍。
如果我的分享对你有帮助,请关注我,一起向上进击。
Granian 是一个 Rust 编写的、面向 Python 应用的 HTTP 服务器,性能表现堪称吊打 uwsgi、gunicorn 等现有方案。
根据项目主页的介绍,Granian 可跨平台使用,支持使用 ASGI/3、RSGI 和 WSGI 等协议的应用,实现了 HTTP/1 和 HTTP/2 协议,还支持 HTTPS 和 Websockets。
Granian 去年才发布,目前在社区的应用预计还不广泛,但是受欢迎程度上升明显。目前在 Github 上的星标为 2k,近期增长很快。

如何安装
使用 pip 命令即可快速安装 Granian:
pip install granian
Granian 提供了大量的配置选项,并提供一个自动重载器(使用 granian[reload] 安装时),这对本地开发非常有用。
granian --reload hello_django.asgi:application
Unwrap textCopy to clipboard
[INFO] Starting granian (main PID: 6049)
[INFO] Listening at: 127.0.0.1:8000
[INFO] Spawning worker-1 with pid: 6050
[INFO] Started worker-1
[INFO] Started worker-1 runtime-1
如何部署
如果想要切换到 Granian 进行生产环境部署,也非常简单。
假设之前使用的时 gunicorn,那么只要修改一条命令即可。
# 原命令
gunicorn project.wsgi:application --bind :8000
## 新命令
## WSGI
granian --interface wsgi project.wsgi:application --port 8000
## ASGI
granian --interface asgi project.asgi:application --port 8000
性能对比
开发者同时还提供了一些基准测试的数据,我从中摘取了涉及 WSGI 其他方案的对比数据,可以发现 Granian 可以给 Python 应用带来极其明显的提升,某些分项指标上甚至达到了数百倍。

从上图中可以发现,Gunicorn 和 uWSGI 方案的 RPS 都远低于 1 万,最低的只有不到4000,而 Granian 则可以做到3-4万以上,性能提升接近10倍。
另外在延迟数据方面,Granian也有着明显的优势,而且延迟较为稳定,不存在超长延迟的情况。
小结一下
从性能对比数据来看,Granian是一个非常不错的 HTTP 服务器替代方案。
未来的新项目我肯定会尝试一下,甚至现有项目切换做一下实验也完全可以,基本上可以做到无缝迁移,替换到uWSGI和gunicorn。
建议有兴趣的朋友都试试。
- EOF -
文章已经看到这了,别忘了在右下角点个“赞”和“在看”鼓励哦~
推荐阅读 点击标题可跳转
最近我开了一家淘宝店,名字叫【打破壁垒】,主打程序开发相关付费素材、工具的共享类商品,帮助大家降低试错和使用成本。欢迎大家关注。

长按扫描下方二维码,然后点击页面中的【打开淘宝】,即可进入店铺:

回复下方「关键词」,获取优质资源
回复关键词「 pybook03」,领取进击的Grey与小伙伴一起翻译的《Think Python 2e》电子版
回复关键词「书单02」,领取进击的Grey整理的 10 本 Python 入门书的电子版
👇关注我的公众号👇
告诉你更多细节干货
欢迎围观我的朋友圈
👆每天更新所想所悟