当其中一名工人未能开机时,我可以告诉Gunicorn失败吗?我不希望gunicorn为我自动处理和重新加载工人,但我希望它不会再次尝试启动工作人员。我应该对主进程或某些信号提出任何特定的异常吗?或者我可以在启动主进程时提供命令行参数? 我想在worker中实现像这种逻辑的smth:
if cond():
sys.exit(1)
然后所有枪手停止而不重新启动这一名工人
答案 0 :(得分:2)
所以,解决方案是使用Gunicorn hooks.它们有很多,但对于这种特殊情况,你可以使用worker_int
钩子。
使用示例可能如下(简化版本,使用gunicorn app_module:app --config gunicorn_config.py
启动),内容为gunicorn_config.py
:
import sys
workers = 1
loglevel = 'debug'
def worker_int(worker):
print('Exit because of worker failure')
sys.exit(1)
您的工作人员代码可能是一个简单的Flask应用程序(内容为app_module.py
:
from flask import Flask
app = Flask()
其他有用的钩子:
就是这样!