如何从内部错误中退出uWsgi worker(python werkzeug)?

时间:2015-01-30 12:14:33

标签: python uwsgi werkzeug

我使用werkzeug在python中编写了一个RESTful API。它与nginx / uWsgi一起运行。我想在发生内部错误(LOST zookeeper会话)时杀死工作进程,让uWsgi产生一个新工作者。

如果我调用sys.exit(0),则worker不会退出。也许SystemExit或Exception正被某个地方捕获。我使用带有

的init脚本作为服务运行

exec $ root / run uwsgi --socket 127.0.0.1:3037 --master --workers 4 --threads 10 --harakiri 60 --die-on-term --thunder-lock --lazy-apps - -py-tracebacker / tmp / ledgerwebtbsock --wsgi-file my_server.py --logto /my_server.py

1 个答案:

答案 0 :(得分:2)

uwsgi --help | grep on-exception

返回一组选项,以控制在引发特定异常时自动重新启动工作程序:

--reload-on-exception                   reload a worker when an exception is raised
--reload-on-exception-type              reload a worker when a specific exception type is raised
--reload-on-exception-value             reload a worker when a specific exception value is raised
--reload-on-exception-repr              reload a worker when a specific exception type+value (language-specific) is raised

查看Roberto de Ioris的10 uWSGI tricks - DjangoDay 2012演示文稿中的幻灯片9,了解更多信息。