欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何用python 操作zookeeper

 更新時間:2020年12月28日 16:43:37   作者:三只松鼠  
這篇文章主要介紹了如何用python 操作zookeeper,幫助大家更好的理解和使用python,感興趣的朋友可以了解下

ZooKeeper 簡介

  ZooKeeper 是一個分布式的、開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),是 Google 的 Chubby 一個開源的實現(xiàn),是 Hadoop 和 Hbase 的重要組件。它是一個為分布式應(yīng)用提供一致性服務(wù)的軟件,提供的功能包括:配置維護、域名服務(wù)、分布式同步、組服務(wù)等。ZooKeeper 支持大部分開發(fā)語言,除了某些特定的功能只支持 Java 和 C。python 通過 kazoo 可以實現(xiàn)操作 ZooKeeper 。

一、安裝

 這個簡單,使用 pip 命令安裝

pip3 install kazoo

二、連接 ZooKeeper 

 可通過 KazooClient 類直接連接 ZooKeeper ,支持多個 host ,端口默認 2181。

import json
from kazoo.client import KazooClient

zk = KazooClient(hosts='10.1.44.55')
zk.start()

三、創(chuàng)建節(jié)點

 先看下 create() 方法定義

def create(self, path, value=b"", acl=None, ephemeral=False,
        sequence=False, makepath=False):
 
    :param path: Path of node.
    :param value: Initial bytes value of node.
    :param acl: :class:`~kazoo.security.ACL` list.
    :param ephemeral: Boolean indicating whether node is ephemeral
             (tied to this session).
    :param sequence: Boolean indicating whether path is suffixed
             with a unique index.
    :param makepath: Whether the path should be created if it
             doesn't exist.

 我們來解釋下這些參數(shù):

  • path:          節(jié)點路徑
  • value:         節(jié)點對應(yīng)的值,注意值的類型是 bytes
  • ephemeral: 若為 True 則創(chuàng)建一個臨時節(jié)點,session 中斷后自動刪除該節(jié)點。默認 False
  • sequence:     若為 True 則在你創(chuàng)建節(jié)點名后面增加10位數(shù)字(例如:你創(chuàng)建一個 testplatform/test 節(jié)點,實際創(chuàng)建的是 testplatform/test0000000003,這串數(shù)字是順序遞增的)。默認 False
  • makepath:  若為 False 父節(jié)點不存在時拋 NoNodeError。若為 True 父節(jié)點不存在則創(chuàng)建父節(jié)點。默認 False 

 舉個例子:

from kazoo.client import KazooClient

zk = KazooClient(hosts='10.1.44.55')
zk.start()
# 創(chuàng)建節(jié)點:makepath 設(shè)置為 True ,父節(jié)點不存在則創(chuàng)建,其他參數(shù)不填均為默認
zk.create('/testplatform/test',b'this is test!',makepath=True)
# 操作完后,別忘了關(guān)閉zk連接
zk.stop()
print(value)

四、查看節(jié)點

 KazooClient 類用提供 get_children() 和 get() 方法獲取 子節(jié)點 和 節(jié)點對應(yīng)的值

from kazoo.client import KazooClient

zk = KazooClient(hosts='10.1.44.55')
zk.start()
# 獲取某個節(jié)點下所有子節(jié)點
node = zk.get_children('/testplatform')
# 獲取某個節(jié)點對應(yīng)的值
value = zk.get('/testplatform/mssql')
# 操作完后,別忘了關(guān)閉zk連接
zk.stop()
print(node,value)

 五、更改節(jié)點

 更改上文創(chuàng)建的 node 值,使用 set() 方法

from kazoo.client import KazooClient

zk = KazooClient(hosts='10.1.44.55')
zk.start()
# 更改節(jié)點對應(yīng)的value
zk.set('/testplatform/test',b'this is not test')
# 獲取某個節(jié)點對應(yīng)的值
value = zk.get('/testplatform/test')
zk.stop()
print(value)

 六、刪除節(jié)點

  刪除上文創(chuàng)建的節(jié)點,使用 delete() 方法

from kazoo.client import KazooClient

zk = KazooClient(hosts='10.1.44.55')
zk.start()
# 刪除節(jié)點對應(yīng)的value
zk.delete('/testplatform/test',recursive=False)
zk.stop()

 參數(shù) recursive:若為 False,當需要刪除的節(jié)點存在子節(jié)點,會拋異常 NotEmptyError 。若為True,則刪除 此節(jié)點 以及 刪除該節(jié)點的所有子節(jié)點

七、watches 事件

 zookeeper 所有讀操作都有設(shè)置 watch 選項(get_children() 、get() 和 exists())。watch 是一個觸發(fā)器,當檢測到 zookeeper 有子節(jié)點變動 或者 節(jié)點value發(fā)生變動時觸發(fā)。下面以 get() 方法為例。

from kazoo.client import KazooClient

zk = KazooClient(hosts='10.1.44.55')
zk.start()

def test(event):
  print('觸發(fā)事件')

if __name__ == "__main__":
  zk.get('/testplatform/test',watch = test)
  print("第一次獲取value")
  zk.set('/testplatform/test',b'hello')
  zk.get('/testplatform/test',watch = test)
  print("第二次獲取value")



# 輸出
#第一次獲取value
#觸發(fā)事件
#第二次獲取value

需要更多高階使用的同學,請參考 kazoo 官方文檔:https://kazoo.readthedocs.io/en/latest/api/client.html

以上就是如何用python 操作zookeeper的詳細內(nèi)容,更多關(guān)于python 操作zookeeper的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python操作文件的參數(shù)整理

    python操作文件的參數(shù)整理

    在本篇文章中我們給大家總結(jié)了關(guān)于python操作文件的相關(guān)參數(shù)以及用法內(nèi)容,需要的朋友們學習下。
    2019-06-06
  • 人工智能學習pyTorch的ResNet殘差模塊示例詳解

    人工智能學習pyTorch的ResNet殘差模塊示例詳解

    這篇文章主要為大家介紹了人工智能學習pyTorch的ResNet殘差模塊示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2021-11-11
  • Python定時任務(wù)框架APScheduler原理及常用代碼

    Python定時任務(wù)框架APScheduler原理及常用代碼

    這篇文章主要介紹了Python定時任務(wù)框架APScheduler原理及常用代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • 使用Python編寫爬蟲的基本模塊及框架使用指南

    使用Python編寫爬蟲的基本模塊及框架使用指南

    這篇文章主要介紹了使用Python編寫爬蟲的基本模塊及框架使用指南,模塊介紹包括了urllib和urllib2以及re的使用例子框架則是Scrapy的簡介,需要的朋友可以參考下
    2016-01-01
  • python使用正則表達式的search()函數(shù)實現(xiàn)指定位置搜索功能

    python使用正則表達式的search()函數(shù)實現(xiàn)指定位置搜索功能

    SEARCH函數(shù),函數(shù)名。主要用來返回指定的字符串在原始字符串中首次出現(xiàn)的位置 ,從左到右查找,忽略英文字母的大小寫。接下來通過本文給大家介紹python使用正則表達式的search()函數(shù)實現(xiàn)指定位置搜索功能,需要的朋友一起看看吧
    2017-11-11
  • Python生成圖文并茂的PDF報告的方法詳解

    Python生成圖文并茂的PDF報告的方法詳解

    reportlab是Python的一個標準庫,可以畫圖、畫表格、編輯文字,最后可以輸出PDF格式。本文將利用reportlab模塊生成圖文并茂的PDF報告,感興趣的可以了解一下
    2022-06-06
  • Selenium多窗口切換解決方案

    Selenium多窗口切換解決方案

    本文主要介紹了Selenium多窗口切換解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • Python解析JSON數(shù)據(jù)的方法簡單例子

    Python解析JSON數(shù)據(jù)的方法簡單例子

    這篇文章主要給大家介紹了關(guān)于Python解析JSON數(shù)據(jù)的方法,解析JSON文件是Python中非常常見的操作,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-09-09
  • Python輕松管理與操作文件的技巧分享

    Python輕松管理與操作文件的技巧分享

    在日常開發(fā)中,我們經(jīng)常會遇到需要對文件進行操作的場景,如讀寫文件、文件夾操作等。本文將為大家介紹一些 Python 中處理文件的實用技巧,讓你的工作更高效
    2023-05-05
  • Python 基于Twisted框架的文件夾網(wǎng)絡(luò)傳輸源碼

    Python 基于Twisted框架的文件夾網(wǎng)絡(luò)傳輸源碼

    這篇文章主要介紹了Python 基于Twisted框架的文件夾網(wǎng)絡(luò)傳輸源碼,需要的朋友可以參考下
    2016-08-08

最新評論