日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

使用python操作zookeeper

發布時間:2025/3/20 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用python操作zookeeper 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

kazoo 介紹
zookeeper的開發接口以前主要以java和c為主,隨著python項目越來越多的使用zookeeper作為分布式集群實現,python的zookeeper接口也出現了很多,現在主流的純python的zookeeper接口是kazoo。因此如何使用kazoo開發基于python的分布式程序是必須掌握的。

安裝kazoo

pip3 install kazoo

基本操作

from kazoo.client import KazooClient zk = KazooClient(hosts='192.168.91.128:2181') #如果是本地那就寫127.0.0.1 zk.start() #與zookeeper連接 zk.stop() #與zookeeper斷開

創建節點

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' from kazoo.client import KazooClient zk = KazooClient(hosts='192.168.91.128:2181') #如果是本地那就寫127.0.0.1 zk.start() #與zookeeper連接 #makepath=True是遞歸創建,如果不加上中間那一段,就是建立一個空的節點 zk.create('/abc/JQK/XYZ/0001',b'this is my house',makepath=True) node = zk.get_children('/') # 查看根節點有多少個子節點 print(node) zk.stop() #與zookeeper斷開

執行輸出:

['abc', 'zookeeper']

注意:空節點的值不能用set修改,否則執行報錯!

刪除節點

如果要刪除這個/abc/JQK/XYZ/0001的子node,但是想要上一級XYZ這個node還是存在的,語句如下:

from kazoo.client import KazooClient zk = KazooClient(hosts='192.168.91.128:2181') #如果是本地那就寫127.0.0.1 zk.start() #與zookeeper連接 #recursive=True是遞歸刪除,就是無視下面的節點是否是空,都干掉,不加上的話,會提示子節點非空,刪除失敗 zk.delete('/abc/JQK/XYZ/0001',recursive=True) node = zk.get_children('/') # 查看根節點有多少個子節點 print(node) zk.stop() #與zookeeper斷開

執行輸出:

['abc', 'zookeeper']

更改節點

現在假如要在0001這個node里更改value,比如改成:“this is my horse!”,

由于上面節點已經被刪除掉了,需要先創建一次。

語句如下:

''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' from kazoo.client import KazooClient zk = KazooClient(hosts='192.168.91.128:2181') #如果是本地那就寫127.0.0.1 zk.start() #與zookeeper連接 zk.create('/abc/JQK/XYZ/0001',b'this is my house',makepath=True) zk.set('/abc/JQK/XYZ/0001',b"this is my horse!") node = zk.get('/abc/JQK/XYZ/0001') # 查看值 print(node) zk.stop() #與zookeeper斷開

執行輸出:

(b'this is my horse!', ZnodeStat(czxid=4294967449, mzxid=4294967452, ctime=1544598301273, mtime=1544598308267, version=1, cversion=0, aversion=0, ephemeralOwner=0, dataLength=17, numChildren=0, pzxid=4294967449))

注意!set這種增加節點內容的方式是覆蓋式增加,并不是在原有基礎上增添。而且添加中文的話可能在ZooInspecter里出現的是亂碼

查看節點

由于所有節點,都是在/ 節點上面的,直接查看根節點,就可以知道所有節點了

from kazoo.client import KazooClient zk = KazooClient(hosts='192.168.91.128:2181') #如果是本地那就寫127.0.0.1 zk.start() #與zookeeper連接 node = zk.get_children('/') print(node) zk.stop() #與zookeeper斷開

執行輸出:

['abc', 'zookeeper']

一鍵清空zookeeper

有些時候,需要將zookeeper的數據全部清空,可以使用以下代碼

from kazoo.client import KazooClient zk = KazooClient(hosts='192.168.91.128:2181') #如果是本地那就寫127.0.0.1 zk.start() #與zookeeper連接 jiedian = zk.get_children('/') # 查看根節點有多少個子節點 print(jiedian) for i in jiedian:if i != 'zookeeper': # 判斷不等于zookeeperprint(i)# 刪除節點zk.delete('/%s'%i,recursive=True) zk.stop() #與zookeeper斷開

注意:默認的zookeeper節點,是不允許刪除的,所以需要做一個判斷。

總結

以上是生活随笔為你收集整理的使用python操作zookeeper的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。