当我在 gunicorn 中为 Django 应用程序设置工人超时时,其他用户无法访问该应用程序
when i set worker time out in gunicorn for Django Application, other users are not able to access the application
我在 Gunicorn 和 Nginx 上有一个 django 应用程序 运行。应用程序中有一个请求需要 10 分钟才能加载页面 [有大量数据要处理],我已将 Gunicorn 的工作时间增加到 1200 秒,以使其有足够的时间加载页面。它工作正常,但在该请求得到处理之前,其他用户无法访问该应用程序给出:
504 网关超时
nginx/1.21.4
这是我的DOCKER
version: '3.8'
services:
web:
volumes:
- static:/static
command: python manage.py makemigrations /
&& python manage.py migrate && python manage.py collectstatic --noinput/
&& python manage.py crontab add /
&& exec gunicorn DrDNAC.wsgi:application --bind 0.0.0.0:8000 --timeout 1200"
build:
context: .
ports:
- "8000:8000"
depends_on:
- db
db:
image: postgres:13.0-alpine
nginx:
build: ./nginx
volumes:
- static:/static
ports:
- "80:80"
depends_on:
- web
volumes:
postgres_data:
static:
这是 nginx:
upstream app {
server web:8000;
}
server {
listen 80;
location / {
proxy_pass https://app;
proxy_connect_timeout 75s;
proxy_read_timeout 300s;
}
location /static/ {
alias /static/;
}
}
这可能是因为工人数量不够。
尝试通过将 --workers=4
添加到 gunicorn 调用来增加数量。
gunicorn DrDNAC.wsgi:application --workers=4 --bind 0.0.0.0:8000 --timeout 1200
您可以在以下link下找到更多信息:
https://docs.gunicorn.org/en/stable/settings.html#worker-processes
此外,您还可以使用 --threads 4
增加线程数量
我在 Gunicorn 和 Nginx 上有一个 django 应用程序 运行。应用程序中有一个请求需要 10 分钟才能加载页面 [有大量数据要处理],我已将 Gunicorn 的工作时间增加到 1200 秒,以使其有足够的时间加载页面。它工作正常,但在该请求得到处理之前,其他用户无法访问该应用程序给出:
504 网关超时 nginx/1.21.4
这是我的DOCKER
version: '3.8'
services:
web:
volumes:
- static:/static
command: python manage.py makemigrations /
&& python manage.py migrate && python manage.py collectstatic --noinput/
&& python manage.py crontab add /
&& exec gunicorn DrDNAC.wsgi:application --bind 0.0.0.0:8000 --timeout 1200"
build:
context: .
ports:
- "8000:8000"
depends_on:
- db
db:
image: postgres:13.0-alpine
nginx:
build: ./nginx
volumes:
- static:/static
ports:
- "80:80"
depends_on:
- web
volumes:
postgres_data:
static:
这是 nginx:
upstream app {
server web:8000;
}
server {
listen 80;
location / {
proxy_pass https://app;
proxy_connect_timeout 75s;
proxy_read_timeout 300s;
}
location /static/ {
alias /static/;
}
}
这可能是因为工人数量不够。
尝试通过将 --workers=4
添加到 gunicorn 调用来增加数量。
gunicorn DrDNAC.wsgi:application --workers=4 --bind 0.0.0.0:8000 --timeout 1200
您可以在以下link下找到更多信息: https://docs.gunicorn.org/en/stable/settings.html#worker-processes
此外,您还可以使用 --threads 4