gunicorn 的包装器以正确处理优雅的重启
项目描述
彩虹马鞍
Rainbow-saddle 是Gunicorn的一个包装器,用于简化代码重新加载而不丢弃请求。
安装
从 pypi 安装:
$ sudo pip install rainbow-saddle
或来自来源:
$ sudo ./setup.py install
为什么?
有时执行kill -HUP <gunicorn PID>不足以重新加载您的代码。例如,如果您将代码托管在符号链接后面,或者安装中的 .pth 更新为指向不同的目录,则它不会很好地工作。
在这种情况下重新加载代码的正确方法有点复杂:
# Reexec a new master with new workers /bin/kill -s USR2 `cat "$PID"` # Graceful stop old workers /bin/kill -s WINCH `cat "$PIDOLD"` # Graceful stop old master /bin/kill -s QUIT `cat "$PIDOLD"`
它还具有更改“主”进程 PID 的缺点,这会使诸如 supervisord 之类的工具感到困惑。
Rainbow-saddle 为您处理所有这些,并且永远不会更改其 PID。重新加载代码变得像再次发送SIGHUP一样简单:
$ rainbow-saddle --pid /tmp/mysite.pid gunicorn_paster development.ini --log-level debug $ kill -HUP `cat /tmp/mysite.pid`
消息
0.4.0
支持 Gunicorn 使用的新二进制升级方法,从 19.6.0 版本开始。放弃对所有以前版本的 Gunicorn 的支持。感谢 Jacob Magnusson,请参阅 commit benoitc/gunicorn @ 418f140了解更多信息。
0.3.1
感谢 Justin Locsei,对 Python3 的兼容性进行了次要修复。
0.3.0
感谢拉斐尔·弗洛里亚诺·达席尔瓦:
添加–gunicorn-pidfile
修复慢启动应用程序的竞争条件
更新psutil