文章目录
- Gunicorn:Python WSGI HTTP 服务器
Gunicorn:Python WSGI HTTP 服务器
Gunicorn 是一款 Python WSGI HTTP 服务器,在 GitHub 上收获了 10,591 个 Star。
Gunicorn 的全称是 Green Unicorn,基于 Ruby 的 Unicorn 项目预分叉工作模型移植而来。自 2010 年起,这个项目持续为 Python 应用提供生产级服务。
Gunicorn 与 Django、Flask、Pyramid 等主流 Web 框架广泛兼容。实现简洁,服务器资源占用低,响应速度较快。
最新 v25 版本带来了两项更新。第一项是为 dirty arbiters 提供每个应用的工作进程分配,这项功能针对运行 ML 模型或长时任务等重负载场景。第二项是 HTTP/2 支持,目前处于 beta 阶段,支持多路复用流。
Gunicorn 支持 WSGI 协议,兼容 Django、Flask、Pyramid 等框架。同时也支持 ASGI 协议,覆盖 FastAPI、Starlette、Quart 等异步框架。
工作进程类型方面,Gunicorn 提供了四种选择。sync 类型是默认选项,适合多数常规应用。gthread 类型使用线程池处理并发请求,适合 I/O 密集型场景。gevent 类型基于 greenlet 实现异步 I/O,可以处理大量并发连接。asgi 类型专门用于 ASGI 应用。
在协议支持方面,Gunicorn 实现了 uWSGI 二进制协议,可以与 nginx 集成。最新 beta 版本还增加了 HTTP/2 支持,通过多路复用流提升传输效率。
工作进程管理是 Gunicorn 的核心能力之一。它支持优雅的工作进程重启和关闭,可以在不中断服务的情况下更新代码或配置。当主进程收到信号时,会启动新的工作进程并逐步替换旧进程。
安装 Gunicorn 通过 pip 完成:
pipinstallgunicorn启动一个基础服务,指定四工作进程:
gunicorn myapp:app--workers4对于 ASGI 应用,需要指定 worker class:
gunicorn myapp:app --worker-class asgiGunicorn 支持通过配置文件进行控制。配置项包括工作进程数量、超时时间、日志级别、绑定地址、工作进程类型等。也可以将这些参数直接写在命令行中。
Gunicorn 的完整文档位于 gunicorn.org,涵盖快速入门、配置、部署和设置参考等内容。社区支持渠道包括 GitHub Issues 和 Libera.chat 上的 gunicorn 频道。
这个项目由志愿者维护。如果你的生产环境正在使用 Gunicorn,可以考虑支持其持续发展。
Gunicorn 采用 MIT 许可证发布。
Gunicorn,可以考虑支持其持续发展。
Gunicorn 采用 MIT 许可证发布。