独角兽牧民:管理守护独角兽

unicornherder的Python项目详细描述


https://secure.travis-ci.org/gds-operations/unicornherder.png

UnicornGunicorn对于在 红宝石和Python。这两个程序的一个更漂亮的特性是 能够通过生成一个新的主控来动态地重新加载应用程序代码 进程(或“仲裁者”,用Gunicorn的语言)响应一个操作 系统信号(SIGUSR2)。不幸的是,此重新加载过程不兼容 使用进程跟踪监视程序,如Upstart,因为旧的主进程作为 重新加载。

独角兽牧人是一个实用工具,旨在帮助使用暴发户和 与独角兽类似的主管。它通过轮询写入的pidfile来实现 通过独角兽主进程,并自动化信号序列 必须发送到主机才能进行“热重新加载”。如果独角兽退出,那么 独角兽牧民,意思是如果你监督牧民 daemonize),您正在有效地监督unicorn进程。

安装

独角兽牧人可以从Python Package Index获得,并且可以使用pip

$ pip install unicornherder

用法

使用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(忽略工人):

unicornherder-diagram.jpeg

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中。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java将Map<String,String>传递给需要Map<String,Object>   java在循环中使用字符串而不是StringBuilder是否会造成内存损失?   jnlp如何更新java控制台JRE?   java更改、修改和重新打包CXFAPI源文件   JavaFXJava应用程序在Fedora上运行一段时间后关闭   使用来自不同类的方法的java   java如何通过ant脚本在linux中使用subst?   java在使用camunda modeler进行base64编码/解码时出错   获取java。netbeans、weblogic和fastswap设置为true时的lang.NoSuchMethodError   java如何提高FinalizerThread在GC中收集对象的优先级   java检测具有相同根的单词   netbeans crud应用程序中的java错误