Когда я устанавливаю тайм-аут рабочего в gunicorn для приложения Django, другие пользователи не могут получить доступ к приложению

У меня есть приложение django, работающее на Gunicorn и Nginx. Есть один запрос в приложении, который занимает 10 минут для загрузки страницы [Есть много данных для обработки], я увеличил время работы до 1200 секунд для Gunicorn, чтобы заставить его занять достаточно времени для загрузки страницы. Это работает нормально, но пока этот запрос не обработан, другие пользователи не могут получить доступ к приложению.

504 Тайм-аут шлюза nginx/1.21.4

Это мой ДОКЕР

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 DrDNAC.wsgi:application --workers=4 --bind 0.0.0.0:8000 --timeout 1200

Более подробную информацию вы можете найти по следующей ссылке: https://docs.gunicorn.org/en/stable/settings.html#worker-processes

Дополнительно вы можете увеличить количество потоков с помощью --threads 4

Вернуться на верх