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