提供了一种新的语法来配置collective.recipe.supervisor
项目描述
概述
此配方有助于配置collective.recipe.supervisor配方中的“程序”选项。
而不是这样做
[supervisor] recipe = collective.recipe.supervisor # (...) programs = 10 process1 ${buildout:bin-directory}/process1 20 process2 ${buildout:bin-directory}/process2
您将这样做
[supervisor] recipe = collective.recipe.supervisor programs = ${supervisor-programs:programs} [supervisor-programs] recipe = collective.recipe.supervisorprograms [process1-program] priority = 10 command = {buildout:bin-directory}/process1 [process2-program] priority = 20 command = {buildout:bin-directory}/process2
此配方支持collective.recipe.supervisor接受的全部选项。
配置程序
该配方将扫描buildout配置,寻找所有以“-program”结尾的章节。每个章节将指定一个由supervisor控制的程序。此配方的“programs”选项将包含传递给collective.recipe.supervisor部分“programs”选项的值。
“*-program”章节接受以下选项
priority
command
args
directory
redirect-stderr
user
只需要
priority
和command
。args
选项的值不应在[]
之间。其他选项将插入到collective.recipe.supervisor的process_opts
字段中。process_name
将从章节名称中提取。示例用法
我们将首先创建一个使用此配方的buildout
>>> write('buildout.cfg', ... """ ... [buildout] ... parts = fake-supervisor ... ... [fake-supervisor] ... recipe = collective.recipe.supervisorprograms:printer ... programs = ${supervisor-programs:programs} ... ... [supervisor-programs] ... recipe = collective.recipe.supervisorprograms ... ... [program-base] ... redirect-stderr = true ... ... [first-program] ... <= program-base ... priority = 10 ... command = bin/first ... directory = /tmp/first ... ... [second-program] ... <= program-base ... priority = 20 ... command = bin/second ... directory = /tmp/second ... user = www-data ... args = -a -b --verbose=1 ... startsecs = 10 ... ... """)
:printer 脚本用于打印生成的 程序 选项。我们不想仅仅为了测试就安装 supervisor。在现实生活中,你会用以下内容替换 fake-supervisor 部分。
[supervisor] recipe = collective.recipe.supervisor # (...) programs = ${supervisor-programs:programs}
此外,我们正在使用 buildout(<= program-base)的继承功能来展示如何为所有程序定义默认参数。这个功能是可选的。
运行 buildout 会给我们以下结果
>>> print 'start', system(buildout) start... programs = 10 first bin/first /tmp/first true 20 second (startsecs=10) bin/second [-a -b --verbose=1] /tmp/second true www-data <BLANKLINE>
处理多个相似程序
有些情况下,你可能会有多个非常相似的程序。例如,在集群设置中,通常会有多个 Zope 实例。
:multiplier 脚本以有限但有用的方式支持这种用法。给定一个基本程序部分,它会克隆它 N 次,只有 command 选项会通过添加 -{index} 后缀来变化。这意味着你可以有一个命令为 bin/instance 的基本程序,并多次乘以它,生成 bin/instance-1、bin/instance-2 以及等等。
以下是一个示例
>>> write('buildout.cfg', ... """ ... [buildout] ... parts = program-multiplier fake-supervisor ... ... [fake-supervisor] ... recipe = collective.recipe.supervisorprograms:printer ... programs = ${supervisor-programs:programs} ... ... [supervisor-programs] ... recipe = collective.recipe.supervisorprograms ... ... [foo-program] ... priority = 10 ... command = /path/to/foo ... directory = /tmp/foo ... ... [program-multiplier] ... recipe = collective.recipe.supervisorprograms:multiplier ... program-section = foo-program ... count = 2 ... """)
运行 buildout 会给我们以下结果
>>> print 'start', system(buildout) start... programs = 10 foo /path/to/foo /tmp/foo 10 foo-1 /path/to/foo-1 /tmp/foo 10 foo-2 /path/to/foo-2 /tmp/foo <BLANKLINE>
变更日志
0.1.0 (2017-07-20)
添加了 :multiplier 脚本。
以有意义的方式对程序进行排序,以增强可读性。
0.0.1 (2016-11-24)
首次发布。
项目详情
collective.recipe.supervisorprograms-0.1.0.tar.gz 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | cdf82d56aa0484dbf0cbce348e33beef4dd218f83da283bdd432e100abdc4dee |
|
MD5 | 0cd745afdd9e6486ad7b463863fb9bf1 |
|
BLAKE2b-256 | c8d4b3ef038dc4cd752c54256de325c4f0cb26ad137a9722a6ee2bafa4118fc4 |