python - 如何使用 kazoo 停止 zookeeper 节点上的数据监视?

标签 python apache-zookeeper kazoo

如何使用 python 模块 kazoo 显式停止在 zNode 上启动的数据监视进程? 下面是我创建datawatch的方式

from   kazoo.recipe.watchers    import DataWatch
datawatch = DataWatch(client=zookeeper_client, path=path_to_znode, func=callback_function)

我经历了kazoo wiki并想出了以下方法。

  1. 从传递的回调方法(此处为 callback_function)返回 False 将停止 zNode 上的数据监视。 但是这种方式不适合我,因为callback_function是用户自己处理的,不在我手上。
  2. 当进程停止时,datawatch 会自动被杀死。但我不想停止这个过程。
  3. 这是我目前使用的 hacky 方式。 datawatch类下有一个私有(private)成员变量“_stopped”。我将其设置为 true。

    datawatch._stopped = True
    

有人可以在这里提出更好的解决方案吗? 谢谢。

最佳答案

DataWatch Doc还说:

If the client connection is closed (using the close command), the DataWatch will no longer get updates. So stopping the zookeeper client should be enough.

from kazoo.client import KazooClient

zk = KazooClient(hosts='127.0.0.1:2181')
zk.start()
datawatch = DataWatch(client=zk, path=path_to_znode, func=callback_function)
# time pass....
zk.stop()

关于python - 如何使用 kazoo 停止 zookeeper 节点上的数据监视?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40153340/

相关文章:

json - 在 Erlang 中处理 badarg

python - 选择 Pandas 中 DF 中值大于平均值的行(通过函数)

python - 如何从 Python 脚本调用可执行文件?

kubernetes - 启动多个 kafka 代理失败

azure - 具有 Azure SQL 数据库的分布式锁管理器

python - Kazoo 连接 chroot

python - AWS CloudFormation - 如何上传一些 python/flask 代码

javascript - Django - 将变量传递给同一脚本标签内的javascript文件

solr - 没有 Zookeeper 的独立 Solr 的安全选项

python - 如何使用 kazoo 在 Python 中观察后代子节点?