【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.rhkb.cn/news/480863.html

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

相关文章

Django 路由层

1. 路由基础概念 URLconf (URL 配置):Django 的路由系统是基于 urls.py 文件定义的。路径匹配:通过模式匹配 URL,并将请求传递给对应的视图处理函数。命名路由:每个路由可以定义一个名称,用于反向解析。 2. 基本路由配…

单点登录原理

允许跨域–>单点登录。 例如https://www.jd.com/ 同一个浏览器下:通过登录页面产生的cookie里的一个随机字符串的标识,在其他子域名下访问共享cookie获取标识进行单点登录,如果没有该标识则返回登录页进行登录。 在hosts文件下面做的域名…

保持角色一致性!flux新模型redux用法(含模型与工作流)

​ 目录 redux模型是什么,能干啥? 用到的工具有哪些? 工具和模型文件在哪里下载? 整合包: 下载后需要分别放到指定目录: redux模型怎么用? 加载工作流 上传图片和输入提示词 生成结果…

FastAPI 跨域访问cors设置

问题发现 前端vue3写了个页面,调用后台一个服务,出现了跨域访问错误,截图如下: 示例代码如下: from typing import Unionfrom fastapi import FastAPI from pydantic import BaseModel import randomapp FastAPI()…

Admin.NET框架使用宝塔面板部署步骤

文章目录 Admin.NET框架使用宝塔面板部署步骤🎁框架介绍部署步骤1.Centos7 部署宝塔面板2.部署Admin.NET后端3.部署前端Web4.访问前端页面 Admin.NET框架使用宝塔面板部署步骤 🎁框架介绍 Admin.NET 是基于 .NET6 (Furion/SqlSugar) 实现的通用权限开发…

音视频流媒体直播/点播系统EasyDSS互联网视频云平台介绍

随着互联网技术的飞速发展,音视频流媒体直播已成为现代社会信息传递与娱乐消费的重要组成部分。在这样的背景下,EasyDSS互联网视频云平台应运而生,它以高效、稳定、便捷的特性,为音视频流媒体直播领域带来了全新的解决方案。 1、产…

51单片机快速入门之中断的应用 2024/11/23 串口中断

51单片机快速入门之中断的应用 基本函数: void T0(void) interrupt 1 using 1 { 这里放入中断后需要做的操作 } void T0(void): 这是一个函数声明,表明函数 T0 不接受任何参数,并且不返回任何值。 interrupt 1: 这是关键字和参…

某航客服部满意度调查及管理改进项目纪实

某航客服部满意度调查及管理改进项目纪实 ——采用信息化的调查工具,调研并提高员工积极性 【客户行业】航空航天 【问题类型】企业管理问题诊断 【客户背景】 某公司是某大型航空公司旗下的客户服务中心(以下简称为客服部),…

[巅峰极客 2021]签到

[巅峰极客 2021]签到 给了我们好多表情,真的是一脸懵逼 注意给我们的关键词 GAME 现在还不知道是什么意思我们去试着解开一下 用这个emoji表情解密器,这里我找了好久才找到一个 emoji-aes 这里的Key值就是GAME 运行后出现flag NSSCTF{10ve_4nd_Peace…

docker-compose 升级

官方下载地址: https://github.com/docker/compose/releases 下载完放到kali root目录下 # mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose # chmod x /usr/local/bin/docker-compose # docker-compose --version

玄机应急:linux入侵排查webshell查杀日志分析

目录 第一章linux:入侵排查 1.web目录存在木马,请找到木马的密码提交 2.服务器疑似存在不死马,请找到不死马的密码提交 3.不死马是通过哪个文件生成的,请提交文件名 4.黑客留下了木马文件,请找出黑客的服务器ip提交 5.黑客留…

linux(centos) 环境部署,安装JDK,docker(mysql, redis,nginx,minio,nacos)

目录 1.安装JDK (非docker)1.1 将文件放在目录下: /usr/local/jdk1.2 解压至当前目录1.3 配置环境变量 2.安装docker2.1 验证centos内核2.2 安装软件工具包2.3 设置yum源2.4 查看仓库中所有docker版本,按需选择安装2.5 安装docker2.6 启动docker 并 开机…

内核模块里获取当前进程和父进程的cmdline的方法及注意事项,涉及父子进程管理,和rcu的初步介绍

一、背景 在编写内核态系统监控代码时,有时候为了调试的便捷性,不仅要拿到异常事件有关的线程id,进程id和父进程id,还需要拿到当前进程和父进程的comm和cmdline。主要有几下几个原因: 1)单纯的pid或者tgi…

电脑启动需要经历哪些过程?

传统BIOS启动流程 1. BIOS BIOS 启动,BIOS程序是烧进主板自带的ROM里的,所以无硬盘也可以启动。BIOS先进行自检,检查内存、显卡、磁盘等关键设备是否存在功能异常,会有蜂鸣器汇报错误,无错误自检飞快结束。 硬件自检…

网络原理(一)—— http

什么是 http http 是一个应用层协议,全称为“超文本传输协议”。 http 自 1991 年诞生,目前已经发展为最主流使用的一种应用层协议。 HTTP 往往基于传输层的 TCP 协议实现的,例如 http1.0,http1.0,http2.0 http3 是…

【亚马逊云科技】使用Amazon Lightsail搭建nginx服务

文章目录 前言一、为什么选择Amazon Lightsail二、创建账号与登录注册亚马逊账号登录控制台 三、创建Amazon Lightsail进入控制台创建实例登录服务器部署nginx服务关闭防火墙 总结 前言 不论是个人名片还是官方网站都离不开网站建设工作。计算机技术经历漫长的发展&#xff0c…

南京大学苏州校区学生代表团到访合合信息,开启“沉浸式”人工智能企业行

为进一步深化校企合作,探索产业科技拔尖创新人才培养新模式,近期,南京大学苏州校区师生代表到访上海合合信息科技股份有限公司(以下简称“合合信息”,股票代码:SH688615)。此次活动设置了展厅讲…

DM-VIO(ROS)+t265配置运行记录(ubuntu18.04+ros melodic)

在工作中需要对DM-VIO算法进行测试,于是配置并记录了一下: 首先运行ros接口的dm-vio,一定要先配置源码 https://github.com/lukasvst/dm-vio在这个网址把源码下载下来并解压,并安装一下依赖: sudo apt-get install …

pageoffice最新版本浏览器点击没反应解决办法

一、问题现象 最新版本的谷歌、火狐浏览器,调用pageoffice时,点击后没反应(旧的谷歌浏览器不受影响)。 二、产生原因 服务器返回pageOffice的客户端唤起链接格式为: PageOffice://|http://192.168.1.120:8080/xxx …

【Linux相关】服务器无网情况配置conda

【Linux相关】 服务器无网情况配置conda 文章目录 环境配置1. 本地下载miniconda,传到服务器2. 确认安装包是否传送成功3. 确保有安装权限4. 安装5. 写路径6. 看一下是否成功 环境配置 ssh的话,服务器连不上网,无法在线下载,需要本…