Gunicorn有时使我的服务器崩溃,实际上是用sys.exit(1)
退出了Python解释器!为什么是这样?请注意,故障并不总是在同一点。在下面显示的两种情况下,在gunicorn的exit
之前有一个不同的最后一个代码行。在此运行的代码是openpyxl,不应导致解释器关闭!
服务器内存不足吗?还有其他原因吗?
(这是Google Container Engine中Docker上Gunicorn上的Flask。)
案例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
答案 0 :(得分:1)
如@maxm所写,服务器正在捕获SIGABRT
,该调用通常为happens on timeout。
您应该增加超时值或减少请求处理时间。还you can setup the signal handler尝试记录超时后工作线程中发生的情况。