2-zakoo使用
source:http://kazoo.readthedocs.io/en/latest/basic_usage.html
1 基本使用
1.1 连接处理
要使用zakoo,需要创建一个KazooClient对象,来建立一个和服务器的连接。
zakoo有一个状态系统,可以注册一个listerner,在状态改变的时候被调用。有三种状态:lost,connected,suspended。
1.2 CRUD
zakoo可以在znode上进行create、read、update、delete操作。
create:
ensure_path(),可以在多层目录中创建不存在的中层目录。但不可以设定节点的内容。
create(),创建节点和内容。
read:
exists(),查看一个节点是否存在
get(),抓取节点内容。
get_children(),获取子节点列表
update:
set(),操作和create一致。
delete:
delete(),删除节点,可以递归删除。
1.3 watchers
设置检测器,在节点改变或子节点改变时触发。
第一种设定方式:只接受一次调用,不接受会话事件。在get和get_children里面设定。
第二种设定方式:每次改变都会触发,不需要重设检测器。
ChildrenWatch
DataWatch
1.4 transactions
将多个命令作为一个单元提交。
好像没什么用,再说。。
1.5 测试代码
import time
from kazoo.client import KazooClient
from kazoo.client import KazooState def main():
#-----------建立连接-----------
zk = KazooClient(hosts='192.168.10.12:2181')
zk.start() @zk.add_listener
def my_listener(state):
if state == KazooState.LOST:
print('conn lost')
elif state == KazooState.SUSPENDED:
print('conn sus')
else:
print('conn ok') #---------写入节点信息----------
#zk.create("/worker/process1/125",b"i am award process.") #--------读取节点信息----------
#if zk.exists("/worker/process1/125"):
# print("125 exists.") #data,stat = zk.get('/worker/process1/125')
#print(data) #children = zk.get_children('/worker/process1')#
#print(children) #-------改写节点信息---------
#zk.set("/worker/process1/125",b"i am tally process.")
#data,stat = zk.get('/worker/process1/125')
#print(data) #--------删除节点-----------
#zk.delete('/worker/process1',recursive=True)
#pchildren = zk.get_children('/worker')
#rint(children) #--------设置检测器---------
@zk.ChildrenWatch('/worker')
def watch_children(children):
print("Children are now: %s" % children) @zk.DataWatch('/worker/process2')
def watch_node(data,stat):
print("Version: %s, data: %s" % (stat.version, data.decode("utf-8"))) time.sleep(2)
zk.stop() if __name__ == '__main__':
main()
2-zakoo使用的更多相关文章
随机推荐
- Spark 学习笔记:(四)MLlib基础
MLlib:Machine Learning Library.主要内容包括: 数据类型 统计工具 summary statistics correlations stratified sampling ...
- linux centos7 安装常用软件java,node,mysql,Seafile
linux centos7 安装常用软件java,node,mysql,Seafile 安装压缩解压缩软件 yum install -y unzip zip 安装git yum install -y ...
- python 1: 解决linux系统下python中的matplotlib模块内的pyplot输出图片不能显示中文的问题
问题: 我在ubuntu14.04下用python中的matplotlib模块内的pyplot输出图片不能显示中文,怎么解决呢? 解决: 1.指定默认编码为UTF-8: 在python代码开头加入如下 ...
- ArrayDeque类的使用详解
ArrayDeque是Deque接口的一个实现,使用了可变数组,所以没有容量上的限制. 同时,ArrayDeque是线程不安全的,在没有外部同步的情况下,不能再多线程环境下使用. ArrayDeque ...
- HDU3567 Eight II —— IDA*算法
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3567 Eight II Time Limit: 4000/2000 MS (Java/Others) ...
- 请问snmp到底是干啥的。
这个事情分两方面来说:首先是路由器这部分.路由器开启SNMP功能之后,它能够对自己的每个接口上的流量有一个统计,当然统计的不单单只有流量.然后路由器把统计到的内容按一定的格式保存起来.这个格式是大家都 ...
- mongodb mongod 参数解释
基本配置----------------------------------------------------------------------------------quiet # 安静输出-- ...
- LR问题汇总
关于录制打开IE问题 1.LR11用IE11录制脚本时能打开web页面,但是一直是0事件,也没有脚本代码; 解决方法: LR版本和IE版本兼容性问题,这个问题是我们安装环境时不注意,导致LR无法录制. ...
- JavaScript正则表达式API
1. [代码][JavaScript]代码 参考自<Core JavaScript Reference 1.5> JavaScript正则表达式有两种写法(随便哪种,看个人习惯): ...
- kafka 查询 SQL Query
. SELECT COUNT(*) FROM wiseweb_crawler_foreignmedias WHERE site_id= AND (gathertime BETWEEN '2017-05 ...