跳转到内容

Django Gunicorn配置

来自代码酷

Django Gunicorn配置[编辑 | 编辑源代码]

简介[编辑 | 编辑源代码]

Gunicorn(Green Unicorn)是一个纯Python编写的WSGI HTTP服务器,用于运行Python Web应用程序(如Django)。它简单、轻量且高效,适合生产环境部署。本文将详细介绍如何在Django项目中配置Gunicorn,包括安装、基本配置、性能调优及实际案例。

安装Gunicorn[编辑 | 编辑源代码]

在开始配置前,需先安装Gunicorn。建议在虚拟环境中安装:

  
pip install gunicorn

基本配置[编辑 | 编辑源代码]

启动Gunicorn[编辑 | 编辑源代码]

最简单的启动方式是直接运行Gunicorn命令,指定Django的WSGI应用模块:

  
gunicorn myproject.wsgi:application

其中:

  • myproject.wsgi是Django项目的WSGI模块路径。
  • application是WSGI规范中定义的入口点。

常用参数[编辑 | 编辑源代码]

Gunicorn支持多种参数以优化性能:

  • -w:工作进程数(推荐值为2×CPU核心数+1)。
  • -b:绑定地址和端口(如0.0.0.0:8000)。
  • --timeout:请求超时时间(默认30秒)。

示例:

  
gunicorn -w 4 -b 0.0.0.0:8000 --timeout 120 myproject.wsgi:application

配置文件[编辑 | 编辑源代码]

对于复杂配置,推荐使用配置文件(如gunicorn.conf.py)。以下是一个示例:

  
bind = "0.0.0.0:8000"  
workers = 4  
timeout = 120  
worker_class = "gthread"  
threads = 2  
accesslog = "/var/log/gunicorn/access.log"  
errorlog = "/var/log/gunicorn/error.log"

启动时指定配置文件:

  
gunicorn -c gunicorn.conf.py myproject.wsgi:application

性能调优[编辑 | 编辑源代码]

工作模式[编辑 | 编辑源代码]

Gunicorn支持多种工作模式:

  • **同步模式**(默认):每个请求由一个工作进程处理。
  • **异步模式**:使用geventeventlet提高并发能力。

安装异步依赖:

  
pip install gevent

配置示例:

  
worker_class = "gevent"  
workers = 2

线程与进程[编辑 | 编辑源代码]

对于CPU密集型任务,可结合线程和进程:

  
workers = 2  
threads = 4  
worker_class = "gthread"

实际案例[编辑 | 编辑源代码]

场景:部署电商网站[编辑 | 编辑源代码]

假设有一个Django电商项目,需处理高并发请求。配置如下: 1. 使用gevent异步模式。 2. 日志记录到/var/log/gunicorn/。 3. 超时设置为180秒(因支付流程较长)。

配置文件:

  
bind = "0.0.0.0:8000"  
workers = 4  
worker_class = "gevent"  
timeout = 180  
accesslog = "/var/log/gunicorn/access.log"  
errorlog = "/var/log/gunicorn/error.log"

常见问题[编辑 | 编辑源代码]

1. 静态文件无法加载[编辑 | 编辑源代码]

Gunicorn不处理静态文件,需通过Nginx或CDN分发。

2. 工作进程崩溃[编辑 | 编辑源代码]

检查日志中的错误信息,常见原因包括:

  • 内存不足(减少workers)。
  • 代码中存在未捕获异常。

总结[编辑 | 编辑源代码]

Gunicorn是Django生产部署的高效工具。通过合理配置工作模式、进程数和超时时间,可显著提升性能。结合Nginx反向代理和静态文件处理,能构建稳定的生产环境。

graph TD A[用户请求] --> B[Nginx] B --> C[Gunicorn] C --> D[Django应用] D --> C C --> B B --> A

下一步建议学习Nginx与Gunicorn集成以完善部署流程。