У меня есть удаленный сервер с Nginx -> gunicorn -> django. Когда я ударяю представление, которое вызывает исключение, я ожидаю вернуть страницу 500 server error
. Вместо этого он висит на ~ 10 секунд, и я получаю 502 bad gateway
.Django отключается вместо возвращаемого исключения
Когда я заглядываю в журналы стрельбы, они указывают, что рабочий был приурочен и был убит. Исключения не регистрируются, и электронные письма администратора не отправляются. Бревна для стрельбы:
[2016-02-16 16:47:30 -0600] [5809] [CRITICAL] WORKER TIMEOUT (pid:5817)
[2016-02-16 22:47:30 +0000] [5817] [INFO] Worker exiting (pid: 5817)
[2016-02-16 16:47:30 -0600] [5833] [INFO] Booting worker with pid: 5833
На моей локальной машине все работает так, как ожидалось. Они оба работают одинаково settings.py
(DEBUG - False). Я свел его к тестовому случае
def foo(request):
raise Exception('bar')
Browsing к нему локально, он немедленно возвращает страницу ошибки 500 сервера, а также стреляя администратор электронной почты. На удаленном сервере браузер вращается некоторое время, а nginx возвращает плохой ответ шлюза. Никакие электронные письма не отправляются, никакие исключения не регистрируются.
Обычные страницы возвращаются сразу с ответами, которые я ожидаю. Похоже, что это плохое поведение, только если выбрано исключение.
Что может вызывать такое поведение?