[Python3高阶编程] - Gunicorn 介绍与使用指南

张开发
2026/4/6 20:34:05 15 分钟阅读

分享文章

[Python3高阶编程] - Gunicorn 介绍与使用指南
Gunicorn 是什么GunicornGreenUnicorn是一个 Python WSGI HTTP 服务器用于运行 Python Web 应用。它是生产环境中最流行的 Python 应用服务器之一特点是简单、轻量、高性能。客户端 → Gunicorn处理 HTTP、管理 Worker → 你的 Python 应用Flask/Django/FastAPI 等核心功能1. Worker 管理支持多种 Worker 类型适应不同场景Worker 类型适用场景说明sync默认CPU 密集型、简单请求同步阻塞每个 worker 同时处理 1 个请求gthread一般 Web 应用多线程单 worker 内多线程处理gevent高并发 I/O 密集型基于协程极高并发能力eventlet高并发 I/O 密集型类似 gevent另一种协程实现2. 进程管理Master-Worker 架构Master 进程负责管理Worker 进程处理请求优雅重启kill -HUP不中断服务热更新代码自动重启Worker 崩溃自动拉起超时杀进程Worker 超时自动终止防止卡死3. 负载均衡Master 进程自动将请求分发到空闲 Worker。4. 可观测性访问日志、错误日志StatsD 指标集成可自定义日志格式快速上手安装pip install gunicorn # 如果用 gevent worker pip install gunicorn gevent最简启动gunicorn app:app格式gunicorn 模块名:应用对象# app.py from flask import Flask app Flask(__name__) app.route(/) def hello(): return Hello World!常用参数gunicorn app:app \ --bind 0.0.0.0:8000 \ # 监听地址和端口 --workers 4 \ # Worker 数量推荐 2×CPU核心1 --worker-class gthread \ # Worker 类型 --threads 2 \ # 每个 worker 的线程数gthread 模式 --timeout 120 \ # Worker 超时时间秒 --access-logfile - \ # 访问日志- 表示 stdout --error-logfile - \ # 错误日志 --log-level info \ # 日志级别 --daemon # 守护进程模式后台运行配置文件推荐生产环境建议用配置文件而不是命令行参数# gunicorn.conf.py # 绑定地址 bind 0.0.0.0:8000 # Worker 配置 workers 4 worker_class gthread threads 2 timeout 120 keepalive 5 # 日志 accesslog - # stdout errorlog - loglevel info access_log_format %(h)s %(l)s %(u)s %(t)s %(r)s %(s)s %(b)s %(f)s %(a)s %(D)s # 进程管理 preload_app True # 预加载应用节省内存 max_requests 1000 # Worker 处理 N 个请求后重启防内存泄漏 max_requests_jitter 50 # 加随机抖动避免所有 worker 同时重启 # 钩子函数 def on_starting(server): print(Gunicorn is starting...) def post_fork(server, worker): server.log.info(fWorker spawned (pid: {worker.pid}))启动时指定配置gunicorn app:app -c gunicorn.conf.py常见框架对接Flaskgunicorn app:appDjangogunicorn myproject.wsgi:applicationFastAPI# 需要 uvicorn worker pip install uvicorn gunicorn app:app -k uvicorn.workers.UvicornWorker运维操作# 优雅重启代码更新后不中断服务 kill -HUP master_pid # 查看 master pid cat gunicorn.pid # 启动时加 --pid gunicorn.pid # 平滑关闭 kill -TERM master_pid # 强制关闭 kill -9 master_pid生产架构建议Gunicorn 通常不直接暴露给公网前面会加 Nginx 做反向代理用户 → NginxSSL/静态文件/限流 → Gunicorn应用服务器 → Python 应用Nginx 配置示例server { listen 80; server_name example.com; location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }一句话总结Gunicorn 就是 Python Web 应用的生产车间——你负责写代码它负责管理进程、分发请求、保证服务稳定运行其他注意事项不要在 Windows 上使用Gunicorn 仅支持 Unix 系统生产环境必须配合反向代理如 Nginx用于处理静态文件和负载均衡合理设置工作进程数过多会消耗内存过少会影响性能监控内存使用长时间运行可能出现内存泄漏定期重启通过max_requests参数避免内存泄漏累积Gunicorn 是一个成熟稳定的 WSGI 服务器特别适合中小型 Python Web 应用的生产部署。配合合适的配置和监控能够提供可靠的 HTTP 服务。

更多文章