Python:kazoo模块与Zookeeper交互

本文涉及的产品
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
注册配置 MSE Nacos/ZooKeeper,182元/月
简介: Python:kazoo模块与Zookeeper交互

github: https://github.com/python-zk/kazoo

文档: https://kazoo.readthedocs.io/en/latest/

安装

$ pip install kazoo

1、CURD代码示例

>>> from kazoo.client import KazooClient


>>> zk = KazooClient(hosts='127.0.0.1:2181')

# zkCli.sh
>>> zk.start()

# ls /
>>> zk.get_children("/")
['zookeeper']

# create /mydata data
>>> zk.create("/mydata", "data".encode())
'/mydata'

# get /mydata
>>> zk.get("/mydata")
(b'data',
ZnodeStat(czxid=40, mzxid=40, ctime=1560494490063, mtime=1560494490063, version=0, cversion=0,
aversion=0, ephemeralOwner=0, dataLength=4, numChildren=0, pzxid=40))

# set /mydata data2
>>> zk.set("/mydata", "data2".encode())
ZnodeStat(czxid=40, mzxid=41, ctime=1560494490063, mtime=1560494514269, version=1, cversion=0,
aversion=0, ephemeralOwner=0, dataLength=5, numChildren=0, pzxid=40)

# delete /mydata
>>> zk.delete("/mydata")
True

#
>>> zk.exists("/mydata")

# quit
>>> zk.stop()

2、监视Zookeeper节点数据发生变化

(1)Python代码

# -- coding: utf-8 --

import time

from kazoo.client import KazooClient

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

# 启动
zk.start()


@zk.DataWatch("/mydata")
def watch_children(data, stat):
print("Data is %s" % data)
if data:
print("Version is %s" % stat.version)


while True:
time.sleep(10)

(2)从Zookeeper客户端修改数据

$ zkCli.sh

> create /mydata data0
Created /mydata

> set /mydata data1
> set /mydata data2

(3)监听到的数据变化

Data is None
Data is b'data0'
Version is 0
Data is b'data1'
Version is 1
Data is b'data2'
Version is 2


参考:

python kazoo 监视zookeeper节点数据发生变化

            </div>
目录
相关文章
|
6月前
|
人工智能 前端开发 JavaScript
从代码中诞生的浪漫:一个程序员的表白艺术
本文介绍了一款用代码表达爱意的表白网页项目,通过JavaScript、HTML5和CSS3技术实现。它不仅是一个简单的网页,更是一段爱情诗、情感载体和个人魅力展示。借助CodeBuddy智能助手,项目实现了动态页面效果、多媒体展示和互动游戏等功能,支持多设备兼容与性能优化。开源分享旨在激发创意,未来还将拓展多语言支持和社区模块,证明代码也能编织浪漫。
401 19
|
8月前
|
Ubuntu Linux Docker
Docker 入门全攻略:安装、操作与常用命令指南
Docker 的世界非常广阔,这只是一个开始,请继续探索和学习 Docker 的高级特性和最佳实践。后续也会继续更新相关的理论与实践内容。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
移动开发 监控 Java
如何使用Java中的WebSocket?
如何使用Java中的WebSocket?
|
网络协议 Linux 网络安全
使用frp时遇到的问题connect: connection refuseddial tcp xxxx:7000: connect: connection refused
最近在做的项目需要用到frp来做代理连接本地内网机,卡在最后启动客户端的时候,提示报错:login to server failed: dial tcp xxxx:7000: connect: connection refuseddial tcp xxxx:7000: connect: connection refused!!找了很多尝试的办法,现在给大家列一下希望对大家有帮助。
5095 0
|
机器学习/深度学习 算法 算法框架/工具
Python+OpenCV+OpenPose实现人体姿态估计(人体关键点检测)
Python+OpenCV+OpenPose实现人体姿态估计(人体关键点检测)
Python+OpenCV+OpenPose实现人体姿态估计(人体关键点检测)
|
存储 C++ 程序员
C++内存分配及变长数组的动态分配
//------------------------------------------------------------------------------------------------ 第一部分 C++内存分配 //------------------------------------------------------------------------------------------------ 一。
1841 0