Почему gunicorn вызывает sys.exit(1)?
Gunicorn иногда ломает мой сервер, фактически выходя из интерпретатора Python с sys.exit(1)
! Почему это? Обратите внимание, что сбой не всегда в одной точке. В двух случаях, показанных ниже, есть последняя кодовая строка перед exit
, Этот код работает здесь openpyxl, который не должен вызывать отключение интерпретатора!
На сервере не хватает памяти? Какая-то другая причина?
(Это Flask на Gunicorn на Docker в Google Container Engine.)
Случай 1
File "/virtualenv_for_docker/lib/python3.7/site-packages/openpyxl/descriptors/base.py", line 166, in __set__
super(Bool, self).__set__(instance, value)
File "/virtualenv_for_docker/lib/python3.7/site-packages/gunicorn/workers/base.py", line 196, in handle_abort
sys.exit(1)
SystemExit: 1
Дело 2
File "/virtualenv_for_docker/lib/python3.7/site-packages/openpyxl/descriptors/serialisable.py", line 164, in __eq__
def __eq__(self, other):
File "/virtualenv_for_docker/lib/python3.7/site-packages/gunicorn/workers/base.py", line 196, in handle_abort
sys.exit(1)
SystemExit: 1
1 ответ
Как писал @maxm сервер ловит SIGABRT
этот звонок обычно происходит по таймауту.
Вам следует увеличить значение тайм-аута или сократить время обработки запроса. Также вы можете настроить обработчик сигнала, чтобы попытаться записать, что произошло в рабочем после истечения времени ожидания.