Home | About | Sematext search-lucene.com search-hadoop.com
NEW: Monitor These Apps!
elasticsearch, apache solr, apache hbase, hadoop, redis, casssandra, amazon cloudwatch, mysql, memcached, apache kafka, apache zookeeper, apache storm, ubuntu, centOS, red hat, debian, puppet labs, java, senseiDB
 Search Hadoop and all its subprojects:

Switch to Threaded View
Zookeeper >> mail # user >> How to watch for events on the descendant nodes in ZooKeeper using kazoo?


Copy link to this message
-
How to watch for events on the descendant nodes in ZooKeeper using kazoo?
I recently started working with Python for Zookeeper. I am using `kazoo`
library for Zookeeper. I need to keep a watch on my root node which is -

    /my/example

couple of other nodes which might get added to my above root node will be
like this -

    /my/example/workflow
    /my/example/workflow/v1
    /my/example/workflow/v1/step1
    /my/example/workflow/v1/step2
Now I need to check whether the children which got added in root node
`/my/example` is `/my/example/workflow` or not. If `workflow` node gets
added up in `/my/example` then I will keep a watch on
`/my/example/workflow` node only and if any new children gets added up in
`/my/example/workflow` node then I need to keep a watch on that node as
well.

Let's say, children of `/my/example/workflow` is `/my/example/workflow/v1`,
so now I need to keep a watch on `/my/example/workflow/v1` and then if any
new nodes gets added up on this node `/my/example/workflow/v1` such as
`/my/example/workflow/v1/step1` and `/my/example/workflow/v1/step2` then I
need to print the children of `/my/example/workflow/v1` node and I won't
make any new watches now.

Now I am not sure how to keep on calling watches on my children until
certain point, here in this case till `/my/example/workflow/v1` I need to
keep on watching and as soon as all the steps nodes gets added up, I need
to print the children of `/my/example/workflow/v1`. Below is my code which
works fine for watching on only one root node and now I am not sure how to
do my above problem?
    #!/usr/bin/python
    from kazoo.client import KazooClient

    zk = KazooClient(hosts='127.0.0.1:2181')
    zk.start()

    @zk.ChildrenWatch("/my/example")
    def watch_children(children):
        print("Children are now: %s" % children)
Any help is really appreciated on this. I was following the documentation
by reading the kazoo tutorial from [here](
http://kazoo.readthedocs.org/en/latest/basic_usage.html#watchers)
NEW: Monitor These Apps!
elasticsearch, apache solr, apache hbase, hadoop, redis, casssandra, amazon cloudwatch, mysql, memcached, apache kafka, apache zookeeper, apache storm, ubuntu, centOS, red hat, debian, puppet labs, java, senseiDB