一个用于以面向对象的方式检查和管理基于buildout的集群配置的包
项目描述
代码仓库: http://svn.plone.org/svn/collective/buildout/collective.buildout.cluster
有关问题和评论请发送至 plone-developers [at] lists.sourceforge.net
在 https://bugs.launchpad.net/collective.buildout.cluster 报告错误
详细文档
示例用法
我们首先创建一个包含基本ZEO客户端、一个‘集群’ZEO客户端和两个ZEO服务器的buildout
>>> write('buildout.cfg',
... r"""
... [buildout]
... parts =
... instance-1
... instance-2
... server-1
... server-2
...
... [instance-1]
... http-address = 8080
... recipe = plone.recipe.zope2instance
... zeo-address = 8100
... zeo-client = on
...
... [instance-2]
... recipe = collective.recipe.zope2cluster
... http-address = 8081
... instance-clone = instance-1
...
... [server-1]
... recipe = plone.recipe.zope2zeoserver
... zeo-address = 8100
...
... [server-2]
... recipe = plone.recipe.zope2zeoserver
... zeo-address = 8101
... """)
>>> write('.installed.cfg',
... r"""
... [instance-1]
... bin-directory = C:\src\server-buildout\5.0\bin
... http-address = 8080
... location = C:\src\server-buildout\5.0\parts\instance-1
... recipe = plone.recipe.zope2instance
... zeo-address = 8100
... zeo-client = on
... zope2-location = C:\src\server-buildout\5.0\parts\zope2
...
... [instance-2]
... http-address = 8081
... location = C:\src\server-buildout\5.0\parts\instance-2
... recipe = collective.recipe.zope2cluster
... instance-clone = instance-1
... zope2-location = C:\src\server-buildout\5.0\parts\zope2
...
... [server-1]
... location = C:\src\server-buildout\5.0\parts\server-1
... bin-directory = C:\src\server-buildout\5.0\bin
... recipe = plone.recipe.zope2zeoserver
... zeo-address = 8100
... zope2-location = C:\src\server-buildout\5.0\parts\zope2
...
... [server-2]
... location = C:\src\server-buildout\5.0\parts\server-2
... bin-directory = C:\src\server-buildout\5.0\bin
... recipe = plone.recipe.zope2zeoserver
... zeo-address = 8101
... zope2-location = C:\src\server-buildout\5.0\parts\zope2
... """)
从这些文件中读取集群配置应该列出两个服务器和两个客户端实例
>>> import os
>>> from collective.buildout.cluster.cluster import Cluster
>>> cluster = Cluster(os.getcwd(), 'buildout.cfg', '.installed.cfg')
cwd: ...
>>> for server in cluster.getServers():
... print server.getInstanceName()
... print server.getInstanceCtl()
... print server.getPort('zeo')
... print
server-1
C:\src\server-buildout\5.0\bin\server-1
8100
<BLANKLINE>
server-2
C:\src\server-buildout\5.0\bin\server-2
8101
<BLANKLINE>
>>> for client in cluster.getClients():
... print client.getInstanceName()
... print client.getInstanceCtl()
... print client.getPort('http')
... print
instance-1
C:\src\server-buildout\5.0\bin\instance-1
8080
<BLANKLINE>
instance-2
C:\src\server-buildout\5.0\bin\instance-2
8081
<BLANKLINE>
现在,让我们添加第三个客户端,并确保buildout.cfg文件已相应更改
>>> settings = {'instance-clone': 'instance-1',
... 'http-address': '8082'}
>>> client = cluster.addNewClient('instance-3', settings=settings)
>>> cat('buildout.cfg')
<BLANKLINE>
...
parts =
instance-1
instance-2
instance-3
server-1
...
[instance-3]
recipe = collective.recipe.zope2cluster
http-address = 8082
instance-clone = instance-1
>>> client['http-address']
'8082'
>>> client['instance-clone']
'instance-1'
>>> client['name']
'instance-3'
尝试通过相同名称添加另一个客户端应该会失败
>>> cluster.addNewClient('instance-3', settings=settings)
Traceback (most recent call last):
...
ValueError: A section named 'instance-3' already exists!
更改端口号,甚至启用端口号都是可能的
>>> i2 = cluster.getClient('instance-2')
>>> i2.setPort('http', '8091')
>>> i2['http-address']
'8091'
>>> i2.setPort('webdav', '8092')
>>> i2['webdav-address']
'8092'
>>> cat('buildout.cfg')
<BLANKLINE>
...
[instance-2]
recipe = collective.recipe.zope2cluster
http-address = 8091
instance-clone = instance-1
webdav-address = 8092
...
同样,可以通过将其设置为None来禁用端口
>>> i2.setPort('webdav', None)
>>> cat('buildout.cfg')
<BLANKLINE>
...
[instance-2]
recipe = collective.recipe.zope2cluster
http-address = 8091
instance-clone = instance-1
...
>>> i2['webdav-address']
Traceback (most recent call last):
...
KeyError: 'webdav-address'
最后,删除客户端也应该可行
>>> for client in cluster.getClients():
... print client.getInstanceName()
instance-1
instance-2
instance-3
>>> cluster.removeClient('instance-3')
>>> cat('buildout.cfg')
<BLANKLINE>
...
parts =
instance-1
instance-2
server-1
...
>>> for client in cluster.getClients():
... print client.getInstanceName()
instance-1
instance-2
贡献者
Sidnei da Silva,作者
变更历史
0.6 (2010-07-30)
Windows服务的服务名称现在与Zope2.Startup.zopectl.ZopeCmd.do_start()内部的get_service_name()函数一致,即“Zope19906508”而不是“Zope_19906508”。 [kleist]
Windows服务不再以调试模式启动Zope。 [kleist]
0.5 (2010-04-05)
修复愚蠢的拼写错误。
0.4 (2010-04-05)
支持最新的zope2instance配方,不再安装zopeservice.py。 [sidnei]
0.3 (2009-07-11)
实现了在Windows上选择启动类型的功能(可用选项为“手动”或“自动”)[sidnei]
0.2 (2009-04-03)
实现了从配置文件中安装/删除/启动/停止所有可能的服务,特别适用于Windows。[sidnei]
0.1 (2009-03-04)
实现了从buildout.cfg中读取集群配置的功能。[sidnei]
实现了启动/停止实例的功能。[sidnei]
实现了创建新实例的功能。[sidnei]
使用ZopeSkel创建了配方。[sidnei]
下载
项目详情
下载文件
下载适合您平台的文件。如果您不确定该选择哪个,请了解有关安装包的更多信息。
源分布
collective.buildout.cluster-0.6.tar.gz的散列值
| 算法 | 散列摘要 | |
|---|---|---|
| SHA256 | b85fd10ee611accebb71e316262741b7f4fe893fde00bae5249d32382c3cdc64 |
|
| MD5 | 0fd4d7e0df84de8ba63a906a5de08004 |
|
| BLAKE2b-256 | 07c236aea9d997dc34399c07f1f8e2355d4c9a72d726c68b87e843e600a7ee92 |