动物园管理员的高级绑定。
pykeeper的Python项目详细描述
#pykeeper:zookeeper的高级绑定
本项目的目标是提供一个比官方低级python zookeeper绑定(zkpython)更高级别的api。
有关django支持,请参见[djakeeper](http://github.com/nkvoll/djkeeper)。
*自动重新连接
*递归删除
*递归创建
*缓存版本的:[get(cached-get)、get-u children(cached-get-u children)、exists(cached-exists)]
*轻松处理和屏蔽临时断开/重新连接。
/>从pypi安装最新relase:
$pip install pykeeper
…或者从github获取最新的开发版本:
$pip install https://github.com/nkvoll/pykeeper/zipball/development egg=pykeeper
此外,pykeeper需要一个正式的低级python zookeeper绑定的工作安装。它们可以从源代码(推荐,解释如下)构建,也可以从pypi安装静态编译的版本[zc zookeeper static](http://pypi.python.org/pypi/zc zookeeper static),该版本可能在体系结构/操作系统上工作,也可能不在体系结构/操作系统上,
也可能不是最新版本可用的ZooKeeper版本。
根据
re--prefix=/usr/local
$make
$sudo make install
$ldconfig
生成并安装python绑定:
$cd../contrib/zkpython
$ant install
g在本地主机上:22181:
$cd example
$export zoocfgdir=$(pwd)zkserver start foreground
ctest--verbosity=2
o sys.stderr和makes允许通过默认的python日志工具处理日志输出。此行为是可选的,以后可以通过调用pykeeper.uninstall_log_stream()
>;>;pykeeper.install_log_stream()
创建zookeeper客户端并连接:
>;>;client=pykeeper.zookeeper('localhost:22181')
>>gt;client.connect()
>>gt;客户端。获取子节点('/')
['zookeeper']
\n创建节点:
>>gt;客户端。创建递归('/bar/baz','{"确定":true}')
>>gt;客户端。获取子节点('/')
['bar','zookeeper']
>>gt;bool(client.exists('/bar/baz'))
true
>>gt;client.get_children('/bar')
['baz']
>>gt;client.get('/bar/baz')
('{"ok":true},{'pzxid':3620l,"ctime":1328717487776l,"aversion":0,"mzxid":3620l,"numchildren":0,"ephemalowner":0L,"版本":0,"数据长度":12,"时间":1328717487776L,"版本":0,"czxid":3620L})
/>false
>;>client.get_children('/')
['foo','zookeeper']
在<;module>;
文件"pykeeper/client.py"的第176行中,在get
返回zookeeper.get(self.handle,path,self.\u wrap\u watcher(watcher))
zookeeper.nonodeexception:没有节点
Zookeeper服务器调用客户端时将引发异常:
>;>>client.get('/')
回溯(最近一次调用):
文件"<;stdin>;",第1行,在<;模块中;
文件"pykeeper/client.py",第176行,在get中返回zookeeper.get(self.handle,path,self.\u wrap_watcher(watcher))
zookeeper.connectionLossException:连接丢失
我们可以通过调用带有可选超时的"client.wait廑until廑connected()",等待重新建立连接。默认超时为"none",这意味着在重新建立连接之前,调用将被阻塞:
>;>client.state\name
"connecting"
>;>client.wait\u until\u connected()
>;>client.state\name
"connected"
在超时发生之前未重新建立连接,将引发TimeoutException:
>;>client.state\u name
'connecting'
>;>client.wait\u直到连接(超时=10)
回溯(最近一次调用):
file"<;stdin>;",第1行,in<;module>;
文件"pykeeper/client.py",第130行,在等待连接之前
raise timeoutexception()
pykeeper.client.timeoutexception
>;>;client.state\name
"connecting"
``当我调用客户端的任何函数时?
a:很有可能,您试图按照以下方式执行操作:
>;>;导入pykeeper
>;>;客户端=pykeeper.zookeeper('localhost:22181')
>;>;客户端。获取子项('/')
回溯(最近一次调用):
文件""<;stdin>;,第1行,在<;module>;
文件"pykeeper/client.py",第153行,在get_children
返回zookeeper.get_children(self.handle,path,self._wrap_watcher(watcher))
类型错误:需要整数
问题是您忘记调用"client.connec"t()``在使用客户端之前:
>;>;导入pykeeper
>;>;client=pykeeper.zookeeper('localhost:22181')
>;>;client.connect()
>;>;client.get_children('/')
['zookeeper']
在使用客户端以确保客户端有时间连接到ZooKeeper集成之前,请先连接(超时=…)`。
()另一个解决方案是重新使用客户机,而不是每次需要时都创建一个新的客户机。
本项目的目标是提供一个比官方低级python zookeeper绑定(zkpython)更高级别的api。
有关django支持,请参见[djakeeper](http://github.com/nkvoll/djkeeper)。
*自动重新连接
*递归删除
*递归创建
*缓存版本的:[get(cached-get)、get-u children(cached-get-u children)、exists(cached-exists)]
*轻松处理和屏蔽临时断开/重新连接。
/>从pypi安装最新relase:
$pip install pykeeper
…或者从github获取最新的开发版本:
$pip install https://github.com/nkvoll/pykeeper/zipball/development egg=pykeeper
此外,pykeeper需要一个正式的低级python zookeeper绑定的工作安装。它们可以从源代码(推荐,解释如下)构建,也可以从pypi安装静态编译的版本[zc zookeeper static](http://pypi.python.org/pypi/zc zookeeper static),该版本可能在体系结构/操作系统上工作,也可能不在体系结构/操作系统上,
也可能不是最新版本可用的ZooKeeper版本。
根据
re--prefix=/usr/local
$make
$sudo make install
$ldconfig
生成并安装python绑定:
$cd../contrib/zkpython
$ant install
g在本地主机上:22181:
$cd example
$export zoocfgdir=$(pwd)zkserver start foreground
ctest--verbosity=2
o sys.stderr和makes允许通过默认的python日志工具处理日志输出。此行为是可选的,以后可以通过调用pykeeper.uninstall_log_stream()
>;>;pykeeper.install_log_stream()
创建zookeeper客户端并连接:
>;>;client=pykeeper.zookeeper('localhost:22181')
>>gt;client.connect()
>>gt;客户端。获取子节点('/')
['zookeeper']
\n创建节点:
>>gt;客户端。创建递归('/bar/baz','{"确定":true}')
>>gt;客户端。获取子节点('/')
['bar','zookeeper']
>>gt;bool(client.exists('/bar/baz'))
true
>>gt;client.get_children('/bar')
['baz']
>>gt;client.get('/bar/baz')
('{"ok":true},{'pzxid':3620l,"ctime":1328717487776l,"aversion":0,"mzxid":3620l,"numchildren":0,"ephemalowner":0L,"版本":0,"数据长度":12,"时间":1328717487776L,"版本":0,"czxid":3620L})
/>false
>;>client.get_children('/')
['foo','zookeeper']
在<;module>;
文件"pykeeper/client.py"的第176行中,在get
返回zookeeper.get(self.handle,path,self.\u wrap\u watcher(watcher))
zookeeper.nonodeexception:没有节点
Zookeeper服务器调用客户端时将引发异常:
>;>>client.get('/')
回溯(最近一次调用):
文件"<;stdin>;",第1行,在<;模块中;
文件"pykeeper/client.py",第176行,在get中返回zookeeper.get(self.handle,path,self.\u wrap_watcher(watcher))
zookeeper.connectionLossException:连接丢失
我们可以通过调用带有可选超时的"client.wait廑until廑connected()",等待重新建立连接。默认超时为"none",这意味着在重新建立连接之前,调用将被阻塞:
>;>client.state\name
"connecting"
>;>client.wait\u until\u connected()
>;>client.state\name
"connected"
在超时发生之前未重新建立连接,将引发TimeoutException:
>;>client.state\u name
'connecting'
>;>client.wait\u直到连接(超时=10)
回溯(最近一次调用):
file"<;stdin>;",第1行,in<;module>;
文件"pykeeper/client.py",第130行,在等待连接之前
raise timeoutexception()
pykeeper.client.timeoutexception
>;>;client.state\name
"connecting"
``当我调用客户端的任何函数时?
a:很有可能,您试图按照以下方式执行操作:
>;>;导入pykeeper
>;>;客户端=pykeeper.zookeeper('localhost:22181')
>;>;客户端。获取子项('/')
回溯(最近一次调用):
文件""<;stdin>;,第1行,在<;module>;
文件"pykeeper/client.py",第153行,在get_children
返回zookeeper.get_children(self.handle,path,self._wrap_watcher(watcher))
类型错误:需要整数
问题是您忘记调用"client.connec"t()``在使用客户端之前:
>;>;导入pykeeper
>;>;client=pykeeper.zookeeper('localhost:22181')
>;>;client.connect()
>;>;client.get_children('/')
['zookeeper']
在使用客户端以确保客户端有时间连接到ZooKeeper集成之前,请先连接(超时=…)`。
()另一个解决方案是重新使用客户机,而不是每次需要时都创建一个新的客户机。