Почему 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этот звонок обычно происходит по таймауту.

Вам следует увеличить значение тайм-аута или сократить время обработки запроса. Также вы можете настроить обработчик сигнала, чтобы попытаться записать, что произошло в рабочем после истечения времени ожидания.

Другие вопросы по тегам