如何使用 python 模块 kazoo 显式停止在 zNode 上启动的数据监视进程? 下面是我创建datawatch的方式
from kazoo.recipe.watchers import DataWatch
datawatch = DataWatch(client=zookeeper_client, path=path_to_znode, func=callback_function)
我经历了kazoo wiki并想出了以下方法。
- 从传递的回调方法(此处为 callback_function)返回 False 将停止 zNode 上的数据监视。 但是这种方式不适合我,因为callback_function是用户自己处理的,不在我手上。
- 当进程停止时,datawatch 会自动被杀死。但我不想停止这个过程。
这是我目前使用的 hacky 方式。 datawatch类下有一个私有(private)成员变量“_stopped”。我将其设置为 true。
datawatch._stopped = True
有人可以在这里提出更好的解决方案吗? 谢谢。
最佳答案
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/