当前位置: 首页 > 知识库问答 >
问题:

如何使用kazoo在ZooKeeper中监视子代节点上的事件?

呼延升
2023-03-14

我最近开始为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/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节点的子节点,现在我不会制作任何新手表。

现在,我不知道如何在某一点之前继续给我的孩子们打电话,在这里,直到/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教程,以了解相关文档

共有1个答案

凌波峻
2023-03-14

试试这样的方法:

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)
 类似资料:
  • 我正在做一个项目,在这个项目中,我需要在一个节点上维护一个表,并且该节点也包括子节点。我尝试过使用PathCache,但我不知道如何在这里监视孩子们的孩子? 这里我的根节点是-,我正在使用下面的代码监视该节点。我想做的是,让手表保持在znode上。假设这些节点被添加到我的根节点- 然后我应该得到通知(直到这一部分我能够使它工作),但如果任何新节点被添加、更新或删除到,和,那么我也应该得到通知,而这

  • 我最近开始使用。我正在使用库for ZooManager。 我有一个非常简单的使用kazoo for Zookeeper的用例。我有一个根节点-。现在我需要监视根节点,如果添加到根节点的新节点是,那么我只监视节点。除了节点之外,我不想监视任何其他节点。然后,如果有任何新的子节点被添加到节点,那么我也会监视它们。 假设下面的孩子加起来- 然后我也会监视节点。 在动物园管理员中使用Kazoo可以做到这

  • 我在docker容器中运行了一个简单的Node.js HTTP服务器。其中一个基本结构文件夹使用from镜像主机和容器目录。 在节点服务器中,我使用NPM包,设置了一个监视程序来跟踪卷目录中的更改(尽管我已经尝试了多个其他监视程序,结果相同)。 当我在本地运行节点服务器时,观察者会正确地拾取对所监视目录的更改。在这种情况下,将这些报告为或,这对应于我运行的脚手架脚本,用于在目录中添加或删除新文件夹

  • 问题内容: 我想获取所有属于以下子项的标签: 我知道如何找到像这样的特定类的元素: 但是我不知道如何找到所有的孩子,而不是其他孩子。 就像我想选择: 问题答案: 尝试这个

  • 每个人 使用SoapUI 5.2.1和Groovy TestCase有2个测试步骤: SOAP请求“创建” Groovy脚本 请求内: 内部脚本: 此脚本返回: 我应该在脚本中更改什么,以便脚本可以返回我:

  • 本文向大家介绍Zookeeper Watcher(事件监听器)?相关面试题,主要包含被问及Zookeeper Watcher(事件监听器)?时的应答技巧和注意事项,需要的朋友参考一下 Watcher(事件监听器),是 ZooKeeper 中的一个很重要的特性。ZooKeeper 允许用户在指定节点上注册一些 Watcher,并且在一些特定事件触发的时候,ZooKeeper 服务端会将事件通知到感兴