当我在 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

增加线程数量