zkutil.CachedReader: 实现一个可以本地缓存zookeeper 数据的reader, 用于实现消费存储在zk中的配置信息的功能.
Closed this issue · 2 comments
drmingdrmer commented
zkutil.CachedReader
实现一个可以本地缓存zookeeper 数据的reader, 用于实现消费存储在zk中的配置信息的功能.
- CachedReader实例对应一个zk node, 在缓存这个zk node的数据之后也支持
watch
的功能: 如果zk node发生改变, 可以发现并更新本地缓存.
Synopsis
cr = CachedReader('127.0.0.1:2181', conf.cluster + '/bla/importer_conf.json')
for i in range(cr['jobs']['num']):
doit()
接口
class CachedReader(dict):
def __init__(self, zk, path, callback=None):
def watch(self):
def close(self):
-
__init__
:zk
: host列表或zk实例, 参考zklock.path
: 存储json配置的 zk node path.callback
: 可选, 指定一个callable, 在zk node改变时被调用:callback(path, old_dict, new_dict)
__init__
负责给对应的zk node增加一个变化回调, 当节点变化时重新设置缓存在本地的value. -
watch
: 阻塞的监视zk node的变化, 如果有变化则返回old_dict 和 new_dict.否则一直阻塞. -
close
: 关闭所有资源: watch线程, 如果需要的话, 关掉__init__
创建的zk client. 以及停止回调callback -
读取配置使用dict风格的方式, 如果
blabla/xx.json
的配置信息如下:
{
"foo": {
"bar": 123
}
}
cr["foo"]["bar"]
来读取对应zk node中的值123.
sejust commented
没问题
pengsven commented
么问题