跳转到主要内容

简化配置多个Zope实例的过程。

项目描述

Build status

概述

本食谱使配置多个Zope实例变得更容易。

示例用法

我们将从创建一个使用本食谱的buildout开始

>>> write('buildout.cfg',
... """
... [buildout]
... parts = instance instance-multiplier
...
... [instance]
... recipe = collective.recipe.zopeinstancemultiplier:printer
... http-address = 8080
... option-foo = value-foo
... option-bar = value-bar
...
... [instance-multiplier]
... recipe = collective.recipe.zopeinstancemultiplier
... instance-part = instance
... count = 2
... """)

配置的 instance-multiplier 部分被设置为生成两个额外的部分,使用 instance 部分作为模型。将创建两个新的部分: instance-1instance-2。这些部分将完全复制模型部分,除了 http-address 选项,该选项将针对每个部分递增。因此我们将有

  • instancehttp-address 等于 8080

  • instance-1http-address 等于 8081

  • instance-2http-address 等于 8082

:printer 食谱仅在安装时打印出部分选项。我们不希望在测试时生成真实的Zope实例。在实际生活中,您将使用 plone.recipe.zope2instance

运行buildout将给出

>>> print 'start', system(buildout)
start...
Installing instance.
http-address = 8080
option-bar = value-bar
option-foo = value-foo
Installing instance-1.
http-address = 8081
option-bar = value-bar
option-foo = value-foo
Installing instance-2.
http-address = 8082
option-bar = value-bar
option-foo = value-foo
...

支持“ip:port”语法

http-address 选项中支持“ip:port”语法

>>> write('buildout.cfg',
... """
... [buildout]
... parts = my-instance my-instance-multiplier
...
... [my-instance]
... recipe = collective.recipe.zopeinstancemultiplier:printer
... http-address = 127.0.0.1:1234
...
... [my-instance-multiplier]
... recipe = collective.recipe.zopeinstancemultiplier
... instance-part = my-instance
... count = 2
... """)

运行buildout将给出

>>> print 'start', system(buildout)
start...
Installing my-instance.
http-address = 127.0.0.1:1234
Installing my-instance-1.
http-address = 127.0.0.1:1235
Installing my-instance-2.
http-address = 127.0.0.1:1236
...

添加自定义实例

有时您想在集群中拥有一个自定义实例。为了简化配置,"乘数"部分提供了一个包含下一个要使用的端口的特殊选项。您可以使用此选项如下

>>> write('buildout.cfg',
... """
... [buildout]
... parts = instance instance-multiplier instance-custom
...
... [instance]
... recipe = collective.recipe.zopeinstancemultiplier:printer
... http-address = 8080
...
... [instance-multiplier]
... recipe = collective.recipe.zopeinstancemultiplier
... instance-part = instance
... count = 2
...
... [instance-custom]
... <= instance
... http-address = ${instance-multiplier:next-http-address}
... custom-option = custom-value
... """)

运行buildout将给出

>>> print 'start', system(buildout)
start ...
Installing instance.
http-address = 8080
Installing instance-1.
http-address = 8081
Installing instance-2.
http-address = 8082
...
Installing instance-custom.
custom-option = custom-value
http-address = 8083

根据部分名称(支持 ${:_buildout_section_name}

有时选项值必须包含部分名称。Buildout通过提供特殊值 _buildout_section_name_ 来支持这种情况。

以下示例展示了在多个Zope实例场景中,如何通常使用此特殊值,而不使用此食谱

[instance]
...
http-address = 8080
special-log-path = /path/to/the/logs/${:_buildout_section_name}.log

[instance-1]
<= instance
http-address = 8081

[instance-2]
<= instance
http-address = 8082

尝试将先前示例适配到此食谱的工作方式如下

[instance]
...
http-address = 8080
special-log-path = /path/to/the/logs/${:_buildout_section_name}.log

[instance-multiplier]
recipe = collective.recipe.zopeinstancemultiplier
instance-part = instance
count = 2

然而,这会 失败。因为Buildout的工作方式,在食谱可以访问用于乘以其实例部分的实例部分时,变量替换已经发生。

为了使其工作,需要进行简单适配。只需包含一个额外的美元符号以转义变量。以下是一个示例

>>> write('buildout.cfg',
... """
... [buildout]
... parts = instance instance-multiplier
...
... [instance]
... recipe = collective.recipe.zopeinstancemultiplier:printer
... http-address = 8080
... special-log-path = /path/to/the/logs/$${:_buildout_section_name_}.log
...
... [instance-multiplier]
... recipe = collective.recipe.zopeinstancemultiplier
... instance-part = instance
... count = 2
... """)

运行buildout将给出

>>> print 'start', system(buildout)
start ...
Installing instance.
http-address = 8080
special-log-path = /path/to/the/logs/instance.log
Installing instance-1.
http-address = 8081
special-log-path = /path/to/the/logs/instance-1.log
Installing instance-2.
http-address = 8082
special-log-path = /path/to/the/logs/instance-2.log
...

变更日志

0.1.0 (2017-07-18)

  • 添加对特殊变量 _buildout_section_name 的支持。

0.0.2 (2017-07-17)

  • 修复 setup.py 中的描述。

0.0.1 (2017-07-17)

  • 第一个版本。

项目详情


下载文件

下载适合您平台文件的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。

源分布

由以下组织支持

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