Когда я устанавливаю тайм-аут рабочего в 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