gunicorn启动django的坑

在使用Gunicorn启动Django时,遇到worker超时问题,即便在无负载情况下依然存在。配置文件包括:bind、workers、threads等参数。尝试将worker_class设置为默认的sync后,问题得到解决。worker_class的选择对于处理工作负载类型至关重要,不同的worker_class如eventlet、gevent、tornado等需要额外的依赖库。同步模式(sync)通常适用于大多数情况,而其他异步模式可能在特定场景下更优。
摘要由CSDN通过智能技术生成

配置文件
bind = ‘0.0.0.0:80’
workers = 8
threads = 64
loglevel = ‘debug’
timeout=120
backlog = 1024
worker_class = ‘gevent’
daemon = True
proc_name = ‘xxx’
pidfile = ‘./xx.pid’
accesslog = ‘./log/all.log’
errorlog = ‘./log/error.log’

用上面的的方式启动的时候总是提示worker超时,即使在没有负载的情况下也是这样,使用的是虚拟机。
将worker_class换成默认的sync后就好了
关于worker_class的设置
worker_class
-k STRING, --worker-class STRING
sync
The type of workers to use.

The default class (sync) should handle most “normal” types of workloads. You’ll want to read Design for information on when you might want to choose one of the other worker classes. Required libraries may be installed using setuptools’ extras_require feature.

A string referring to one of the following bundled classes:

sync
eventlet - Requires eventlet >= 0.24.1 (or install it

以下是一个基本的 Nginx、GunicornDjango 和 DRF 示例,涵盖了常见的配置和设置: 1. 安装和配置 Nginx 在服务器上安装 Nginx,并创建一个新的站点配置文件。以下是一个示例配置文件,将所有请求转发到 Gunicorn: ``` server { listen 80; server_name yourdomain.com; location / { proxy_pass http://127.0.0.1:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } ``` 2. 安装和配置 GunicornDjango 项目的虚拟环境中安装 Gunicorn: ``` pip install gunicorn ``` 创建一个 Gunicorn 配置文件(比如 gunicorn_config.py),指定项目的 WSGI 应用程序和其他选项: ``` import multiprocessing bind = "127.0.0.1:8000" workers = multiprocessing.cpu_count() * 2 + 1 ``` 3. 安装和配置 Django 和 DRF 在 Django 项目的虚拟环境中安装 Django 和 DRF: ``` pip install django djangorestframework ``` 创建一个 Django 项目,并在 settings.py 中添加 DRF 的应用程序: ``` INSTALLED_APPS = [ ... 'rest_framework', ... ] ``` 在 urls.py 中添加 DRF 的路由: ``` from django.urls import path, include urlpatterns = [ ... path('api/', include('rest_framework.urls')), ... ] ``` 创建一个 DRF 视图(比如 views.py),实现一个简单的 API: ``` from rest_framework.views import APIView from rest_framework.response import Response class HelloWorldView(APIView): def get(self, request): return Response("Hello, World!") ``` 在 urls.py 中添加一个路由,将视图映射到 URL: ``` from django.urls import path from .views import HelloWorldView urlpatterns = [ ... path('api/hello/', HelloWorldView.as_view()), ... ] ``` 4. 启动应用程序 使用 Gunicorn 启动 Django 项目: ``` gunicorn myproject.wsgi:application -c gunicorn_config.py ``` 访问 http://yourdomain.com/api/hello/,应该会看到 "Hello, World!" 的响应。如果您遇到任何问题,请参阅 Nginx、GunicornDjango 和 DRF 的文档和教程,以获取更详细的说明和指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值