我使用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
答案 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,了解更多信息。