Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is gunicorn calling sys.exit(1)?

Tags:

Gunicorn is sometimes crashing my server, actually exiting the Python interpreter with sys.exit(1)! Why is this? Note that the failure is not always at the same point. In the two cases shown below, there is a different last codeline before gunicorn's exit. This code running here is openpyxl , which should not be causing interpreter shutdown!

Is the server running out of memory? Some other cause?

(This is Flask on Gunicorn on Docker in Google Container Engine.)

Case 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 

Case 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 
like image 523
Joshua Fox Avatar asked Oct 25 '18 15:10

Joshua Fox


1 Answers

As wrote @maxm the server is catching a SIGABRT, that call generally happens on timeout.

You should increase the timeout value or reduce the request processing time. Also you can setup the signal handler to try to log what happened in the worker after a timeout.

like image 53
Artemiy Rodionov Avatar answered Sep 18 '22 11:09

Artemiy Rodionov