Подтвердить что ты не робот

Проблема с тайм-аутом Gunicorn Nginx

Я запускаю django на gunicorn + nginx. У меня возникла проблема с загрузкой файлов. Фактически загружаемые файлы работают нормально, но время отпусков, что вызывает это в nginx:

2011/07/25 12:13:47 [error] 15169#0: *2317 upstream timed out (110: Connection timed out) while reading response header from upstream, client: IP-ADDRESS, server: SERVER, request: "GET /photos/events/event/25 HTTP/1.1", upstream: "http://127.0.0.1:29000/photos/events/event/25", host: "HOST", referrer: "REFERER_ADDRESS"

Если я обновляю страницу, я вижу, что все фотографии загружены просто отлично. Проблема в том, что он вызывает тайм-аут, создавая впечатление, что загрузка не работает.

вот мой gunicorn conf:

bind = "127.0.0.1:29000"
logfile = "/path/to/logs/gunicorn.log"
workers = 3

Я попытался изменить таймаут, но он не сработал.

4b9b3361

Ответ 1

Вы можете попробовать обновить таймаут для прокси-сервера в Nginx, добавив:

proxy_connect_timeout 75s;
proxy_read_timeout 300s;

on/var/nginx/sites-available/[site-config] или /var/nginx/nginx.conf, если вы хотите увеличить тайм-аут на всех сайтах, обслуживаемых nginx.

Вы должны добавить --timeout 300, а также к вашему процессу пушки/конфигурации.

В прошлом это решило мои проблемы с большими загрузками.

Ответ 2

Это не тайм-аут nginx, но, вероятно, тайм-аут Gunicorn. Gunicorn по умолчанию имеет тайм-аут 30 секунд.

В общем, вы должны исправить это, не вернув конечную точку, которая занимает больше 30 секунд, но если это редко используемая конечная точка, вы также можете просто увеличить тайм-аут пушки. Если вы сделаете это, вы, вероятно, также должны увеличить количество рабочих рабочих-артиллеристов.

Чтобы увеличить тайм-аут и работников для пушки, вы можете добавить в командной строке следующие параметры командной строки:

gunicorn --timeout 120 - работники

Ответ 3

У нас была такая же проблема с использованием Django + nginx + gunicorn. Из документации Gunicorn мы настроили грациозный тайм-аут, который практически не отличался.

После некоторых тестов мы нашли решение, параметр для настройки: timeout (И не грациозный таймаут). Он работает как часы.

Итак, Do:

1) откройте файл конфигурации пушки,

2) установите TIMEOUT в любое время - значение находится в секундах

NUM_WORKERS=3
TIMEOUT=120

exec gunicorn ${DJANGO_WSGI_MODULE}:application \
--name $NAME \
--workers $NUM_WORKERS \
--timeout $TIMEOUT \
--log-level=debug \
--bind=127.0.0.1:9000 \
--pid=$PIDFILE

Ответ 4

Это может помочь кому-то с аналогичной проблемой.

Я получал ошибку тайм-аута от nginx и gunicorn в своем приложении Django. Поскольку я получал ошибку тайм-аута от nginx, я не мог видеть реальную ошибку из Django. После добавления нового тайм-аута, например, предложенного fijter. Я видел, что ошибка была в файле settings.py.

Если вы установите DEBUG в False и не добавили доменное имя в ALLOWED_HOSTS, вы можете получить эту ошибку.

Я только что добавил домен в ALLOWED_HOSTS в settings.py, и ошибка исчезла.

Очень простое решение!