文章目录
- Gunicorn(Green Unicorn)是一个兼容 WSGI 协议的 Python Web 服务器,广泛用于部署如 Flask、Django 等 Python Web 框架。 其核心功能包括: 启动 Web 服务 管理多个工作进程 解决 Python 原生并发性能不足问题 常与 Nginx 组合部署,形成 Nginx + Gunicorn 的架构
- pip install gunicorn gunicorn -h # 查看帮助
- 1. 创建一个最基本的 Flask 应用 # app.py from flask import Flask def create_app(): app = Flask(__name__) return app app = create_app() @app.route(‘/’) def index(): return ‘hello world!’ if __name__ == ‘__main__’: app.run() 2. 使用 Gunicorn 启动服务 在项目根目录下运行: gunicorn -w 4 -b 0.0.0.0:8000 app:app 说明: 第一个 app 是文件名 app.py 第二个 app 是 Flask 实例名 app
- 参数 说明 -c CONFIG 使用配置文件(适合生产环境) -b ADDRESS 绑定的地址与端口,例如 0.0.0.0:8000 -w, –workers 工作进程数,正整数,默认 1 -k, –worker-class 工作模式,如 sync(默认)、gevent、eventlet –threads 每个 worker 的线程数,默认 1 –worker-connections 最大客户端并发数,默认 1000 –backlog 待处理连接队列最大长度,默认 2048 -p, –pid 设置 PID 文件路径 –access-logfile 访问日志路径 –access-logformat 日志格式 –error-logfile / –log-file 错误日志路径 –log-level 日志等级,默认 info,可设为 debug/warning/error –limit-request-line 请求行最大长度(默认 4094) –limit-request-fields 请求头最大字段数(默认 100) –limit-request-field-size 请求头字段最大字节数(默认 8190) -t, –timeout 请求超时时间,单位秒,默认 30 秒 –daemon 是否以守护进程运行,默认 False –chdir 切换工作目录 –graceful-timeout 优雅退出时间,默认 30 秒 –keep-alive Keep-alive 连接等待时间,默认 2 秒 –reload 开发模式:代码变更时自动重载 –spew 打印服务器执行的所有语句 –check-config 显示当前配置 -e, –env 设置环境变量
- 示例配置文件:gunicorn.conf.py # 并行工作进程数 workers = 4 # 每个工作进程线程数 threads = 2 # 监听内网端口 bind = ‘127.0.0.1:5000’ # 是否以守护进程运行 daemon = ‘false’ # 工作模式 worker_class = ‘gevent’ # 最大并发连接数 worker_connections = 2000 # PID 文件路径 pidfile = ‘/var/run/gunicorn.pid’ # 日志路径 accesslog = ‘/var/log/gunicorn_access.log’ errorlog = ‘/var/log/gunicorn_error.log’ # 日志级别 loglevel = ‘warning’ 启动命令 gunicorn -c gunicorn.conf.py app:app
- Gunicorn 不支持 Windows 平台 在 Windows 下运行可能出现以下错误: ImportError: No module named _curses / fcntl 解决方法: 尝试自行下载缺失模块(如 fcntl.py) 推荐在 Linux、WSL 或 Docker 环境中部署
- 生产环境中推荐以下组合: Nginx + Gunicorn + Flask/Django Nginx:作为前端反向代理和静态资源服务 Gunicorn:处理 Python 后端应用 Supervisor:管理 Gunicorn 的守护进程运行
目录
- Gunicorn 指南
- 什么是 Gunicorn?
- 安装 Gunicorn
- 使用 Gunicorn 启动 Flask 应用
- Gunicorn 常用参数详解
- 使用配置文件启动 Gunicorn
- 注意事项
- 推荐部署组合
- 总结
Gunicorn(Green Unicorn)是一个兼容 WSGI 协议的 Python Web 服务器,广泛用于部署如 Flask、Django 等 Python Web 框架。
其核心功能包括:
- 启动 Web 服务
- 管理多个工作进程
- 解决 Python 原生并发性能不足问题
- 常与 Nginx 组合部署,形成 Nginx + Gunicorn 的架构
pip install gunicorn
gunicorn -h # 查看帮助
1. 创建一个最基本的 Flask 应用
# app.py
from flask import Flask
def create_app():
app = Flask(__name__)
return app
app = create_app()
@app.route('/')
def index():
return 'hello world!'
if __name__ == '__main__':
app.run()
2. 使用 Gunicorn 启动服务
在项目根目录下运行:
gunicorn -w 4 -b 0.0.0.0:8000 app:app
说明:
- 第一个
app是文件名app.py - 第二个
app是 Flask 实例名app
| 参数 | 说明 |
|---|---|
| -c CONFIG | 使用配置文件(适合生产环境) |
| -b ADDRESS | 绑定的地址与端口,例如 0.0.0.0:8000 |
| -w, –workers | 工作进程数,正整数,默认 1 |
| -k, –worker-class | 工作模式,如 sync(默认)、gevent、eventlet |
| –threads | 每个 worker 的线程数,默认 1 |
| –worker-connections | 最大客户端并发数,默认 1000 |
| –backlog | 待处理连接队列最大长度,默认 2048 |
| -p, –pid | 设置 PID 文件路径 |
| –access-logfile | 访问日志路径 |
| –access-logformat | 日志格式 |
| –error-logfile / –log-file | 错误日志路径 |
| –log-level | 日志等级,默认 info,可设为 debug/warning/error |
| –limit-request-line | 请求行最大长度(默认 4094) |
| –limit-request-fields | 请求头最大字段数(默认 100) |
| –limit-request-field-size | 请求头字段最大字节数(默认 8190) |
| -t, –timeout | 请求超时时间,单位秒,默认 30 秒 |
| –daemon | 是否以守护进程运行,默认 False |
| –chdir | 切换工作目录 |
| –graceful-timeout | 优雅退出时间,默认 30 秒 |
| –keep-alive | Keep-alive 连接等待时间,默认 2 秒 |
| –reload | 开发模式:代码变更时自动重载 |
| –spew | 打印服务器执行的所有语句 |
| –check-config | 显示当前配置 |
| -e, –env | 设置环境变量 |
- 示例配置文件:gunicorn.conf.py
# 并行工作进程数
workers = 4
# 每个工作进程线程数
threads = 2
# 监听内网端口
bind = '127.0.0.1:5000'
# 是否以守护进程运行
daemon = 'false'
# 工作模式
worker_class = 'gevent'
# 最大并发连接数
worker_connections = 2000
# PID 文件路径
pidfile = '/var/run/gunicorn.pid'
# 日志路径
accesslog = '/var/log/gunicorn_access.log'
errorlog = '/var/log/gunicorn_error.log'
# 日志级别
loglevel = 'warning'
- 启动命令
gunicorn -c gunicorn.conf.py app:app
Gunicorn 不支持 Windows 平台
- 在 Windows 下运行可能出现以下错误:
ImportError: No module named _curses / fcntl
解决方法:
- 尝试自行下载缺失模块(如
fcntl.py) - 推荐在 Linux、WSL 或 Docker 环境中部署
生产环境中推荐以下组合:
Nginx + Gunicorn + Flask/Django
Nginx:作为前端反向代理和静态资源服务Gunicorn:处理 Python 后端应用Supervisor:管理 Gunicorn 的守护进程运行
以上为个人经验,希望能给大家一个参考,也希望大家多多支持风君子博客。
您可能感兴趣的文章:
- python3 gunicorn配置文件的用法解读
- python之gunicorn配置详解
- python中的gunicorn配置和使用教程
- python Gunicorn服务器使用方法详解