Python 基于python操纵zookeeper介绍 (3)

# 当节点有变化、节点被删除时,将以多线程的方式调用以参数形式传递给get()、exists()的监视函数,监视函数将会接收到一个WatchedEvent实例

def event_listener(event):

    print(event)

 

children = zk.get_children('/node1',watch=event_listener)

print('node1 has %s children with names %s' % (len(children), children))

 

# 更高级监视api

# 监视子节点的编号

@zk.ChildrenWatch('/node1')

def watch_children(children):

    print("Children are now: %s" % children)

 

 

# 监视节点数据变更

@zk.DataWatch("/node1/subNode2") #

def watch_node(data, state):

    """监视节点数据是否变化"""

    if state:

        print("Version:", state.version, "data:", data)

 

# 空转

i = 0

while i< 100:

    # children = zk.get_children('/node1',watch=event_listener)

    # print('node1 has %s children with names %s' % (len(children), children))

    time.sleep(1)

 

zk.stop()

zk.close()

 

 

 

关于kazooClient连接状态说明

LOST

CONNECTED

SUSPENDED

 

客户端实例刚创建时,处于LOST状态,同zookeeper建立连接后,转为CONNECTED 。如果连接出问题、切换到不同的zookeeper集群几点,转为SUSPENDED状态,当你知道暂时不能执行命令,如果zookeeper节点不再是集群的一部分,连接将丢失,也会导致 SUSPENDED状态

 

客户端再次同zookeeper建立连接,如果会话不存在,客户端连接状态将转为LOST,如果会话没有过期,可用则转为CONNECTED

 

 

运行效果

Python 基于python操纵zookeeper介绍

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpjxyd.html