1

我最近开始为 Zookeeper 使用 Python。我正在使用kazooZookeeper 库。我需要密切关注我的根节点,即 -

/my/example

可能会添加到我上面的根节点的其他几个节点将是这样的 -

/my/example/workflow
/my/example/workflow/v1
/my/example/workflow/v1/step1
/my/example/workflow/v1/step2

现在我需要检查添加到根节点的子节点/my/example是否/my/example/workflow存在。如果workflow添加了节点,/my/example那么我将/my/example/workflow只监视节点,如果在节点中添加了任何新的子/my/example/workflow节点,那么我也需要监视该节点。

假设/my/example/workflowis的孩子/my/example/workflow/v1,所以现在我需要密切关注/my/example/workflow/v1,然后如果在这个节点上添加了任何新节点,/my/example/workflow/v1例如/my/example/workflow/v1/step1然后/my/example/workflow/v1/step2我需要打印/my/example/workflow/v1节点的孩子,我现在不会制作任何新的手表.

现在我不知道如何继续在我的孩子身上调用手表,直到某一点,在这种情况下,直到/my/example/workflow/v1我需要继续观察,一旦所有的步骤节点都加起来,我需要打印/my/example/workflow/v1. 下面是我的代码,它适用于仅在一个根节点上观看,现在我不确定如何解决上述问题?

#!/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)

任何帮助都非常感谢。我通过阅读这里的 kazoo 教程来关注文档

4

1 回答 1

2

尝试这样的事情:

import time
from kazoo.client import KazooClient

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



children = zk.get_children("/my/example/")
if "/workflow" in children:
    children_testing = zk.get_children("/my/example/testing/")
        if children_testing != []: 
            @zk.ChildrenWatch("/my/example/testing")
            def watch_children(children):
                print(children)
        else:
            @zk.ChildrenWatch("/my/example/")
            def watch_children(children):
            print(children)
while True:
    time.sleep(5)
于 2013-11-25T21:58:52.463 回答