How can I exit uWsgi worker (python werkzeug) from internal error?
我有一个使用werkzeug用python编写的RESTful API。 它与nginx / uWsgi一起运行。 当发生内部错误(LOST zookeeper会话)并让uWsgi产生新的工作程序时,我想终止工作程序进程。
如果我调用sys.exit(0),worker不会退出。 可能是SystemExit或Exception被捕获在某个地方。 我正在使用初始化脚本作为服务运行,
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文件my_server.py --logto /my_server.py
1 | uwsgi --help | grep on-exception |
返回一堆选项,以控制在引发特定异常时自动重启工作器:
1 2 3 4 | --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技巧的幻灯片9-DjangoDay 2012演示文稿,以了解更多。