独角兽牧民:管理守护独角兽
unicornherder的Python项目详细描述
Unicorn和Gunicorn对于在 红宝石和Python。这两个程序的一个更漂亮的特性是 能够通过生成一个新的主控来动态地重新加载应用程序代码 进程(或“仲裁者”,用Gunicorn的语言)响应一个操作 系统信号(SIGUSR2)。不幸的是,此重新加载过程不兼容 使用进程跟踪监视程序,如Upstart,因为旧的主进程作为 重新加载。
独角兽牧人是一个实用工具,旨在帮助使用暴发户和 与独角兽类似的主管。它通过轮询写入的pidfile来实现 通过独角兽主进程,并自动化信号序列 必须发送到主机才能进行“热重新加载”。如果独角兽退出,那么 独角兽牧民,意思是如果你监督牧民 daemonize),您正在有效地监督unicorn进程。
用法
使用Gunicorn:
$ unicornherder -- -w 4 myapp:app
使用独角兽(使用Bundler):
$ bundle exec unicornherder -u unicorn
信号
独角兽牧人将以下信号转发到独角兽主进程:
INT QUIT TERM TTIN TTOU USR1 USR2
值得注意的是,独角兽牧人不会向前SIGWINCH,因为它不是 打算被守护的。
独角兽牧人也会拦截SIGHUP,因为这是 当您调用initctl reload并使用它触发 它的独角兽实例。默认情况下,此过程需要两分钟,以便 给新工人时间重新开始工作。
nb:当请求由 新老工人都有。如果你是 在应用程序的部署版本之间运行数据迁移。拜托 在决定是否使用独角兽牧人的 热重新加载功能。
此图显示独角兽和(g)独角兽主兽之间的交互 在启动时和热重新加载hup(忽略工人):
upstart配置
使用的upstart配置示例(与upstart v1.4及更高版本兼容) 下面是独角兽牧人:
description "Unicorn Herder" start on runlevel [2345] stop on runlevel [!2345] respawn respawn limit 5 20 env PORT=4567 setuid www setgid www chdir /var/apps/myapp exec bundle exec unicornherder -u unicorn -- --port $PORT # Or, for a gunicorn installation with a virtualenv # at /var/venv/myapp... #script # . /var/venv/myapp/bin/activate # exec unicornherder -- -w 4 -b "127.0.0.1:$PORT" myapp:app #end script
讨论
您可以与我们的开源邮件列表讨论此工具:gds-operations-open-source@digital.cabinet-office.gov.uk
许可证
独角兽牧人是在麻省理工学院的许可证下被释放的,其副本可以找到 在LICENSE中。