Почему gunicorn вызывает sys.exit (1)? - PullRequest
0 голосов
/ 25 октября 2018

Gunicorn иногда дает сбой моему серверу, фактически завершая работу интерпретатора Python с sys.exit(1)!Почему это?Обратите внимание, что сбой не всегда в одной точке.В двух случаях, показанных ниже, последняя строчка кода отличается от exit у gunicorn.Этот код, запущенный здесь, - openpyxl, который не должен вызывать отключение интерпретатора!

На сервере не хватает памяти?Какая-то другая причина?

(Это настойка на оружии в 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 Ответ

0 голосов
/ 26 октября 2018

Как писал @maxm, сервер перехватывает SIGABRT, этот вызов обычно происходит по таймауту .

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

...