Tengo una aplicación Django ejecutándose en Gunicorn y Nginx. Hay una solicitud en la aplicación que tarda 10 minutos en cargar la página [Hay muchos datos para procesar], aumenté el tiempo de trabajo a 1200 segundos para Gunicorn para que tarde el tiempo suficiente en cargar la página. funciona bien, pero hasta que esa solicitud se procese, otros usuarios no pueden acceder a la aplicación:
504 Tiempo de espera de puerta de enlace nginx/1.21.4
Este es mi 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:Esto es 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/; } }Esto puede suceder porque la cantidad de trabajadores no es suficiente.
Intente aumentar la cantidad agregando --workers=4 a la llamada de gunicorn.
gunicorn DrDNAC.wsgi:application --workers=4 --bind 0.0.0.0:8000 --timeout 1200Puede encontrar más información en el siguiente enlace: https://docs.gunicorn.org/en/stable/settings.html#worker-processes
Además, también puede aumentar la cantidad de subprocesos utilizando --threads 4