【python使用kazoo连ZooKeeper基础使用】

from kazoo.client import KazooClient, KazooState
from kazoo.exceptions import NoNodeError,NodeExistsError,NotEmptyError
import json# 创建 KazooClient 实例,连接到 ZooKeeper 服务器
zk = KazooClient(hosts='127.0.0.1:2181')
zk.start()# 定义节点路径
path = "/main_node/sub_node"# 确保父路径存在
def ensure_path_exists(zk, path):parts = path.strip('/').split('/')for i in range(1, len(parts)):current_path = '/'.join(parts[:i])try:zk.get(current_path)except NoNodeError:# 创建父节点zk.create(current_path, b"")def create_node(zk, path, data):"""创建一个 ZooKeeper 节点。:param zk: KazooClient 实例:param path: 节点路径:param data: 节点数据"""try:# 如果节点已存在,则抛出 NodeExistsError 异常ensure_path_exists(zk, path)zk.create(path, data)print(f"Node {path} created successfully with data: {data.decode('utf-8')}")except NodeExistsError:print(f"Node {path} already exists.")def update_node(zk, path, data):"""更新一个 ZooKeeper 节点的数据。:param zk: KazooClient 实例:param path: 节点路径:param data: 新的节点数据"""try:# 更新节点数据zk.set(path, data)print(f"Node {path} updated successfully with new data: {data.decode('utf-8')}")except NoNodeError:print(f"Node {path} does not exist. Cannot update non-existing node.")def delete_node(zk, path, recursive=False):"""删除一个 ZooKeeper 节点。:param zk: KazooClient 实例:param path: 节点路径:param recursive: 是否递归删除节点及其所有子节点"""try:# 删除节点,recursive=True表示递归删除zk.delete(path, recursive=recursive)print(f"Node {path} deleted successfully")except NoNodeError:print(f"Node {path} does not exist.")except NotEmptyError:print(f"Node {path} is not empty. Use recursive=True to delete it and its children.")except Exception as e:print(f"An error occurred: {e}")def read_node(zk, path):"""读取一个 ZooKeeper 节点的数据。:param zk: KazooClient 实例:param path: 节点路径"""try:data, stat = zk.get(path)print(f"Node {path} data: {data.decode('utf-8')}")return data.decode('utf-8'), statexcept NoNodeError:print(f"Node {path} does not exist.")return None, Nonedef write_json_to_node(zk, path, data):"""将 JSON 数据写入 ZooKeeper 节点。:param zk: KazooClient 实例:param path: 节点路径:param data: 要写入的字典或对象"""try:# 将数据对象序列化为 JSON 字符串json_data = json.dumps(data)# 检查节点是否存在,如果不存在则创建节点if not zk.exists(path):zk.create(path, json_data.encode('utf-8'))print(f"Node {path} created and JSON data written.")else:# 节点存在,更新节点数据zk.set(path, json_data.encode('utf-8'))print(f"JSON data written to node {path}")except TypeError:print("Provided data is not serializable to JSON.")except NodeExistsError:print(f"Node {path} already exists, but was expected to be created.")def read_json_from_node(zk, path):"""从 ZooKeeper 节点读取 JSON 数据。:param zk: KazooClient 实例:param path: 节点路径:return: 反序列化后的 JSON 数据对象"""try:# 读取节点数据data, stat = zk.get(path)# 反序列化 JSON 数据json_data = json.loads(data.decode('utf-8'))print(f"JSON data read from node {path}: {json_data}")return json_dataexcept NoNodeError:print(f"Node {path} does not exist.")return Noneexcept json.JSONDecodeError:print("Failed to decode JSON from node data.")return None

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/887846.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

I/O流综合练习题

(1)要编写一个dog.properties nametom age5 colorred (2)编写Dog 类(name,age,color)创建一个dog对象,读取dog.properties 用相应的内容完 成属性初始化,并输出 (3)将创建的Dog 对象 ,序列化到 文件 dog.dat 文件 package chapter19.Properties;import …

vue多页面应用集成时权限处理问题

在多页面应用(MPA)中,权限管理通常会涉及到每个页面的访问控制、身份验证、以及权限校验。以下是几种常见的权限处理方式: 1. 前端路由权限控制 原理:虽然是多页面应用,通常每个页面会独立加载和渲染&…

泷羽sec-蓝队基础之网络七层杀伤链 (下)学习笔记

声明! 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&a…

《C++ Primer Plus》学习笔记|第7章-函数——C++编程模块 (未完结)

文章目录 7.1 函数的基本知识7.1.1 定义函数7.1.2 函数原型和函数调用 7.2 函数参数和按值传递7.3 函数与数组7.3.5 指针与const7.4 函数和二维数组 7.10 函数指针1. 函数的地址2. 声明函数指针3.使用指针来调用函数 7.12 复习题1. 使用函数的3个步骤是什…

Flink CDC Connector开发指南:逻辑复制协议实战与性能优化

目录 1、PostgreSQL的数据同步原理 2、Debezium定义的数据库和Flink通讯的消息格式 3、Gauss100 OLTP的数据同步方案 3.1 通过 JDBC 拉取数据 3.2 Gauss100 OLTP 逻辑复制插件Socket通讯 3.2.1 开发逻辑复制插件 编译逻辑复制插件 配置逻辑复制工具 启动逻辑复制服务 …

探讨播客的生态系统

最近对播客发生了兴趣,从而引起了对播客背后的技术,生态的关注。本文谈谈播客背后的技术生态系统。 播客很简单 播客(podcast)本质上就是以语音的方式发布信息。它和博客非常类似。如果将CSDN 网站上的文字加一个语音播报。CSDN …

@bytemd/vue掘金markdown插件预览内容有误

vue项目使用bytemd/vue 来预览字符串格式的markdown内容,总会多出如图的一段代码, 请问有没有大佬知道为什么? 很急,求教!!!!!

windows下编译IEC 61850依赖库

windows下编译IEC 61850依赖库 0、引言1、环境准备2、源码下载3、下载WpdPack4、生成vs解决方案5、在VS上对解决方案进行编译 0、引言 最近刚好在学习IEC 61850的一些标准规范,主要包含了两大块协议:MMS和GOOSE。61850是一个非常强大的协议,…

实现对图片或者视频增加隐藏水印和提取水印

好久好久没有写博客了,最近看见一个很有意思的文章:小心你的电脑被窃听,就是说在一些公司,截图都会存在水印,方便溯源,然后出于技术的好奇,我在github上搜了一下,还真有相关的github…

demo专业的一些无聊联想

手印分析年龄之形态学方法初探镜子表面汗潜指印的拍摄 实验采用普通配光检验法(暗视场配光照相法和垂直定向反射配光照相法)和短波紫外反射照相法对镜面上的汗潜指印进行拍摄, 拍摄效果如图2所示。三种方法均取得了较好的拍摄效果, 其中效果最好的是采用暗视场配光照相法拍摄…

科技为翼 助残向新 高德地图无障碍导航规划突破1.5亿次

今年12月03日是第33个国际残疾人日。在当下科技发展日新月异的时代,如何让残障人士共享科技红利、平等地参与社会生活,成为当前社会关注的热点。 中国有超过8500万残障人士,其中超过2400万为肢残人群,视力障碍残疾人数超过1700万…

C++类的自动转换和强制类型转换

目录 一、类型转换 二、转换函数 一、类型转换 C⽀持内置类型隐式类型转换为类类型对象,需要有相关内置类型为参数的构造函数 简单说就是可以将内置类型转化为自定义类型 示例: class Test { public:Test(int n1 0):num1(n1){}void pr…

什么是sfp,onu,​为什么PON(​俗称“光猫”​)模块使用SC光纤接口

在现代网络设备中,我们经常会看到SFP或SFP接口的身影,这些接口有时被简称为光口,但这个称呼并不严谨。有些厂商则称之为多功能口或多用途口,然而这对于不了解的人来说可能还是一头雾水。SFP,即Small Form-Factor Plugg…

【Linux】线程池设计 + 策略模式

🌈 个人主页:Zfox_ 🔥 系列专栏:Linux 目录 一:🔥 线程池 1-1 ⽇志与策略模式1-2 线程池设计1-3 线程安全的单例模式1-3-1 什么是单例模式1-3-2 单例模式的特点1-3-3 饿汉实现⽅式和懒汉实现⽅式1-3-4 饿汉…

flutter项目AndroidiOS自动打包脚本

从业数年余,开发出身,经数载努力位项目经理,因环境欠佳,终失业.失业达七月有余,几经周转,现又从开发,既回原点亦从始.并非与诸位抢食,仅为糊口,望海涵!因从头开始,所经之处皆为新奇,遂处处留痕以备日后之需. 自动打包脚本原文地址:https://zhuanlan.zhihu.com/p/481472311 转…

挂载本地目录到k8s的pod实现持久化存储

本地目录实现持久化存储 容器是无状态的,每次重启都是新的进程,但是我们需要将一些状态数据如配置、用户数据等存到本地来方便新的容器可以拿到历史状态。先创建一个目录来存放数据,并且挂载到minikube虚拟机内(不是pod里面)。注意要新开一个终端来调用,这个命令会阻塞,…

循环神经网络:从基础到应用的深度解析

🍛循环神经网络(RNN)概述 循环神经网络(Recurrent Neural Network, RNN)是一种能够处理时序数据或序列数据的深度学习模型。不同于传统的前馈神经网络,RNN具有内存单元,能够捕捉序列中前后信息…

【言语理解】中心理解题目之结构分析

3.1 五种常见对策表达方式 3.1.1 祈使或建议给对策 应该(应) 需要(要) eg:……。对此,媒体要做好自我规约。……。 eg:……。然而,两地仅简单承接北京转移的一般产业是远远不够的&a…

嵌入式开发之Bootloader移植(一)

1、Bootloader基本概念 Bootloader是硬件启动的引导程序,是运行操作系统的前提; 在操作系统内核或用户应用程序运行之前运行的一小段代码。对软硬件进行相应的初始化和设定,为最终运行操作系统准备好环境; 在嵌入式系统中,整个系统的启动加载任务通常由Bootloader来完成…

【Leecode】Leecode刷题之路第61天之旋转链表

题目出处 61-旋转链表-题目出处 题目描述 个人解法 思路: todo代码示例:(Java) todo复杂度分析 todo官方解法 61-旋转链表-官方解法 方法1:闭合为环 思路: 代码示例:(Java&…