跳转到主要内容

提供了一种新的语法来配置collective.recipe.supervisor

项目描述

Build status

概述

此配方有助于配置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-1bin/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 (6.2 kB 查看散列值)

上传时间 源代码

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面