简化配置多个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 |