差距太大,gunicorn 要被它取代了

你好,我是坚持分享干货的 EarlGrey,翻译出版过《Python编程无师自通》、《Python并行计算手册》等技术书籍。

如果我的分享对你有帮助,请关注我,一起向上进击。

Granian 是一个 Rust 编写的、面向 Python 应用的 HTTP 服务器,性能表现堪称吊打 uwsgi、gunicorn 等现有方案。

根据项目主页的介绍,Granian 可跨平台使用,支持使用 ASGI/3、RSGI 和 WSGI 等协议的应用,实现了 HTTP/1 和 HTTP/2 协议,还支持 HTTPS 和 Websockets。

Granian 去年才发布,目前在社区的应用预计还不广泛,但是受欢迎程度上升明显。目前在 Github 上的星标为 2k,近期增长很快。

9428103d0131d6128b606be8b0537d1b.png

如何安装

使用 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 应用带来极其明显的提升,某些分项指标上甚至达到了数百倍。

97ab57af1cf0e31db8a2b06a96289106.png

从上图中可以发现,Gunicorn 和 uWSGI 方案的 RPS 都远低于 1 万,最低的只有不到4000,而 Granian 则可以做到3-4万以上,性能提升接近10倍。

另外在延迟数据方面,Granian也有着明显的优势,而且延迟较为稳定,不存在超长延迟的情况。

小结一下

从性能对比数据来看,Granian是一个非常不错的 HTTP 服务器替代方案。

未来的新项目我肯定会尝试一下,甚至现有项目切换做一下实验也完全可以,基本上可以做到无缝迁移,替换到uWSGI和gunicorn。

建议有兴趣的朋友都试试。

- EOF -

文章已经看到这了,别忘了在右下角点个“赞”和“在看”鼓励哦~

推荐阅读  点击标题可跳转

1、Python 项目工程化最佳实践

2、Python 可以比 C 还要快!

3、streamlit,一个超强的 Python 库

4、豆瓣8.9分的C++经典之作,免费送!

5、Python 3.12 版本有什么变化?

最近我开了一家淘宝店,名字叫【打破壁垒】,主打程序开发相关付费素材、工具的共享类商品,帮助大家降低试错和使用成本。欢迎大家关注。

fa37fe766a25d11c4e4d9c895df8af4f.jpeg

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

7c9f26ddfbddf9d04f3c84b6ecc62386.png

回复下方「关键词」,获取优质资源

回复关键词「 pybook03」,领取进击的Grey与小伙伴一起翻译的《Think Python 2e》电子版

回复关键词「书单02」,领取进击的Grey整理的 10 本 Python 入门书的电子版

👇关注我的公众号👇

告诉你更多细节干货

260af604fdf332c1949d584bdaf44db6.jpeg

欢迎围观我的朋友圈

👆每天更新所想所悟

<< 确实,初次接触 Gunicorn 和 uWSGI 可能会觉得它们设置起来有些复杂。不过一旦理解了基本概念和配置流程,你会发现它们其实并不难掌握。这里简要介绍这两个工具以及如何简化它们的使用。 ### 简化 Gunicorn 和 uWSGI 的使用 #### 1. Gunicorn (Green Unicorn) - **简介**: Gunicorn 是一个 Python WSGI HTTP Server,专门用于 Unix 平台上的 Web 应用程序。它是一个轻量级、易于使用的服务器解决方案。 - **安装**: ```bash pip install gunicorn ``` - **快速启动**: 对于大多数 Django 项目来说,可以通过一条简单的命令启动 Gunicorn: ```bash gunicorn myproject.wsgi:application ``` - **常用选项**: - `-b [IP]:[PORT]`: 绑定 IP 地址及端口号,默认绑定到 `127.0.0.1:8000`。 - `-w NUM_WORKERS`: 工作进程数,默认为 `(CPU 核心数量 + 1)`。 - `-k worker_class`: 设置工作模式(默认同步)。常用的异步模式有 `gevent`, `meinheld.gmeinheld.MeinheldWorker`等。 ##### 示例:带参数启动 Gunicorn ```bash gunicorn --bind 0.0.0.0:8000 --workers 3 myproject.wsgi:application ``` 这样就绑定了所有网络接口,并指定了三个工人进程。 #### 2. uWSGI - **简介**: uWSGI 是一个多协议应用程序容器服务器,支持多种语言的应用部署,包括 Python WSGI 应用。 - **安装**: 安装 uwsgi 最直接的方法也是通过 pip: ```bash pip install uwsgi ``` - **简易启动**: 类似于 Gunicorn,uWSGI 提供了一个非常方便的方式来进行即时测试或简单部署: ```bash uwsgi --http :8000 --module myproject.wsgi ``` 上述命令会在本地监听 8000 端口并通过 http 协议提供服务。 - **配置文件方式**: 更复杂的场景下推荐使用配置文件 (`ini`, `xml`, `yaml`) 来管理和传递大量配置项给 uWSGI。下面是一个基础的 INI 配置示例: ```ini [uwsgi] chdir = /path/to/your/project/ module = myproject.wsgi:application master = true processes = 5 socket = 127.0.0.1:9001 vacuum = true ``` 然后可以用以下命令根据此配置运行: ```bash uwsgi --ini myproject_uwsgi.ini ``` ### 简化技巧 为了进一步简化 Gunicorn 或者 uWSGI 的使用,考虑以下几个小贴士: - **利用虚拟环境**:始终在一个隔离的环境中操作依赖库,避免全局包冲突的问题。 - **借助 Docker**:如果不想在主机上折腾太多配置,可以尝试把应用打包成 Docker 容器,在里面预设好所有的依赖和服务配置。 - **自动化脚本**:编写 shell 脚本来自动处理常见的任务,例如初始化数据库、收集静态资源等。 - **阅读官方文档**:虽然看起来可能一开始会让人感到不知所措,但官方文档往往是最好的参考资料之一,通常包含了很多实用的例子和技术细节。 总之,尽管刚开始时可能会觉得有点麻烦,但是掌握了正确的配置方法之后,Gunicorn 和 uWSGI 实际上是非常强大而且稳定的生产级别的工具!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值