简化配置多个Zope实例的过程。
项目描述
概述
本食谱使配置多个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-1 和 instance-2。这些部分将完全复制模型部分,除了 http-address 选项,该选项将针对每个部分递增。因此我们将有
instance 的 http-address 等于 8080。
instance-1 的 http-address 等于 8081。
instance-2 的 http-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)
第一个版本。
项目详情
collective.recipe.zopeinstancemultiplier-0.1.0.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | efa10e50769218fca1d04e363c8d9ba3476e48f0977b9373be34d1214b65d54c |
|
| MD5 | df7e98c933c754ca340823b92535c7a4 |
|
| BLAKE2b-256 | 9ab86b5ff28cdf067f5d4434e0e2e3f5560de7b1da43e9d8da6a44f876ddcd94 |