Home | About | Sematext search-lucene.com search-hadoop.com
 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
-
Re: How to watch for events on the descendant nodes in ZooKeeper using kazoo?
Thanks a lot Diego. Let me see whether I can put that example using the
basic approach or not.

By decorations approach you mean the approach I am doing currently right
like this? -

@zk.ChildrenWatch("/my/example")
    def watch_children(children):
        print("Children are now: %s" % children)

Above is called decoration approach?
On Tue, Nov 19, 2013 at 12:00 PM, Diego Oliveira <[EMAIL PROTECTED]> wrote:

> Hello Techy,
>
>    The decorations approach you are doing may not be the best way to handle
> your use case. I don't know very much about the python binding but I think
> you'll need to do the watch programmatically to achieve the what you are
> looking for.  Take a look in the kazzo basic usage:
>
> def my_func(event):
>     # check to see what the children are now
> # Call my_func when the children changechildren > zk.get_children("/my/favorite/node", watch=my_func)
>
>
>
>
>
>
>
>
> On Tue, Nov 19, 2013 at 3:33 PM, Techy Teck <[EMAIL PROTECTED]>
> wrote:
>
> > Can anyone help me with this? I am stuck on this problem..
> >
> > Or if there any better python client for Zookeeper then please let me
> know
> > as well?
> >
> >
> > On Mon, Nov 18, 2013 at 9:41 PM, Techy Teck <[EMAIL PROTECTED]>
> > wrote:
> >
> > > 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)
> > >
> >
>
>
>
> --
> Att.
> Diego de Oliveira
> System Architect
> [EMAIL PROTECTED]
> www.diegooliveira.com
> Never argue with a fool -- people might not be able to tell the difference
>