Python + Gunicorn框架
1. Gunicorn 简介
全称:Green Unicorn
作用:Python WSGI HTTP 服务器,用于部署 Python Web 应用(如 Flask、Django、FastAPI 等)
特点:
- 支持 多进程,每个 worker 独立运行,充分利用多核 CPU
- 支持 多种 worker 类型(同步、异步、协程)
- 与 Nginx 等反向代理结合使用常见
2. 安装
1 | pip install gunicorn |
3. 基本用法
假设你的 Flask 应用在 app.py 中:
1 | from flask import Flask |
启动 Gunicorn:
1 | gunicorn app:app |
解释:
- 第一个
app→ 文件名app.py(不需要.py后缀) - 第二个
app→ Flask 实例名
常用启动参数
| 参数 | 说明 | 示例 |
|---|---|---|
-w / --workers |
worker 数量,通常 = CPU 核心数 × 2 + 1 | -w 4 |
-b / --bind |
绑定地址和端口 | -b 0.0.0.0:8000 |
--worker-class |
worker 类型(sync, gevent, uvicorn.workers.UvicornWorker) | --worker-class gevent |
--timeout |
worker 超时时间(秒) | --timeout 30 |
--access-logfile |
访问日志 | --access-logfile access.log |
--error-logfile |
错误日志 | --error-logfile error.log |
--reload |
开发模式自动重载 | --reload |
示例:
1 | gunicorn -w 4 -b 0.0.0.0:8000 --timeout 60 --access-logfile access.log app:app |
4. Worker 类型
- sync(默认):每个 worker 同时只处理一个请求,适合 CPU 轻量型任务
- gevent / eventlet:基于协程,适合 I/O 密集型应用
- uvicorn.workers.UvicornWorker:用于 FastAPI / Starlette 异步应用
5. 与 Nginx 结合
通常生产环境:
[客户端] <--HTTP--> [Nginx] <--unix socket/TCP--> [Gunicorn]
- Nginx 做负载均衡和静态文件处理
- Gunicorn 只处理 Python WSGI 应用
6. 高级优化
- 调整 worker 数量:
CPU 核心数 × 2 + 1是经验值 - 设置超时和 keep-alive:避免长连接占用 worker
- 日志分离:方便排查问题
- 使用 systemd 或 supervisor 管理 Gunicorn 服务
7.keep-alive http/tcp
画一个 TCP KeepAlive vs Gunicorn HTTP Keep-Alive 对比图,清楚展示两者作用的区别。

对比总结
| 特性 | Gunicorn HTTP Keep-Alive | TCP KeepAlive |
|---|---|---|
| 层级 | HTTP 层 | TCP 层 |
| 默认值 | 2 秒 | 7200 秒 (Linux) |
| 作用 | 复用 HTTP 连接处理多次请求 | 检测长时间空闲 TCP 连接存活 |
| 超时行为 | 超过 keep-alive 秒数关闭 HTTP 连接 | 超过探测次数或时间关闭 TCP 连接 |
| 控制对象 | Gunicorn worker | 内核 TCP socket |