## 九 kazoo操作 Zookeeper

https://kazoo.readthedocs.io/en/latest/basic_usage.html#watchers

- kazoo 开源的 用Python操作zookeeper 的api

- pip install kazoo 安装开源库

  ```python
  from kazoo.client import KazooClient
  #创建和zkserver之间的连接
  zk = KazooClient(hosts='127.0.0.1:2181')
  zk.start()
  ```

  - 建立起和zkServer之间的链接之后 就可以去实现对数据的CRUD

    ```python
    #创建一个节点  传入节点的路径  参数2 节点的数据
    zk.create("/itcast/itheima", b"i love python")
    #获取节点的状态和 数据  相当于在命令行敲get命令
    data, stat = zk.get("/itheima")
    print("Version: %s, data: %s" % (stat.ephemeralOwner, data.decode("utf-8")))
    #获取某一个节点的所有子节点 类似于ls命令
    children = zk.get_children("/itheima")
    print("There are %s children with names %s" % (len(children), children))
    # 给指定节点 设置数据
    zk.set('/itheima',b"kazoo")
    ```

  - 建立对数据 以及节点变化的watch时间

    ``` python
    #数据变化的监听 
    @zk.DataWatch("/itheima/test1")
    def watch_node(data, stat):
        print("Version: %s, data: %s" % (stat.version, data.decode("utf-8")))
        
    # 节点变化的监听(添加了子节点 删除了子节点)
    @zk.ChildrenWatch("/itheima/test1")
    def watch_children(children):
        print("Children are now: %s" % children)    
    
    ```
