Python 如何使用kazoo在ZooKeeper中监视子代节点上的事件?
我最近开始为Zookeeper使用Python。我正在为动物园管理员使用Python 如何使用kazoo在ZooKeeper中监视子代节点上的事件?,python,apache-zookeeper,watch,kazoo,Python,Apache Zookeeper,Watch,Kazoo,我最近开始为Zookeeper使用Python。我正在为动物园管理员使用kazoo库。我需要监视我的根节点,它是- /my/example 可能会添加到我上面的根节点的两个其他节点如下- /my/example/workflow /my/example/workflow/v1 /my/example/workflow/v1/step1 /my/example/workflow/v1/step2 现在我需要检查添加到根节点/my/example中的子节点是否为/my/example/workf
kazoo
库。我需要监视我的根节点,它是-
/my/example
可能会添加到我上面的根节点的两个其他节点如下-
/my/example/workflow
/my/example/workflow/v1
/my/example/workflow/v1/step1
/my/example/workflow/v1/step2
现在我需要检查添加到根节点/my/example
中的子节点是否为/my/example/workflow
。如果工作流
节点添加到/my/example
中,则我将仅监视/my/example/workflow
节点,如果在/my/example/workflow
节点中添加任何新的子节点,则我也需要监视该节点
比如说,/my/example/workflow
的子级是/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
节点的子节点,我不会打印现在就做新手表
现在,我不知道如何在某一点之前继续对我的孩子们调用watchs,在本例中,直到/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教程时遵循了文档的要求,请尝试以下内容:
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)