python中使用kazoo连接zookeeper(一)
http://hi.baidu.com/eldersun/item/b9266e019da769f0f45ba6a4
?
python下連接zookeeper使用最多的是python 包裝的zookeeper 的c客戶端,但是使用c客戶端來訪問zookeeper不是很方便,特別是如果你有代碼潔癖,肯定不能容忍這種情況,那么有沒有純python的實現方式呢,答案是肯定的,kazoo就是比較好的實現方案,而且發展很迅速,目前已經比較成熟。
相比其它的zookeeper 的客戶端 API相比,包括java的客戶端API,kazoo提供了許多更為高層的接口。
zookeeper支持事件編程是非常常見的場景,常用的幾個方法示例:
?
場景一:
#官方文檔說如果使用鎖對象(lock)的話,最好要監控zk client的連接狀態,防止執行過程中鎖的丟失。
#偵聽zk的連接狀態,如果失去鏈接,需要進行處理,如鎖可能已經丟失,需要放棄本地的leader角色
from kazoo.client import KazooState
def my_listener(state):
??? if state == KazooState.LOST:
??????? # Register somewhere that the session was lost
??? elif state == KazooState.SUSPENDED
??????? # Handle being disconnected from Zookeeper
??? else:
??????? # Handle being connected/reconnected to Zookeeper
zk.add_listener(my_listener)
場景二:
#獲取變化,當成控制信號
@zk.DataWatch("/my/favorite")
def watch_node(data, stat):
??? print("Version: %s, data: %s" % (stat.version, data.decode("utf-8")))
轉載于:https://www.cnblogs.com/DjangoBlog/p/3803537.html
總結
以上是生活随笔為你收集整理的python中使用kazoo连接zookeeper(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深入解析MySQL分区(Partitio
- 下一篇: 按之字形顺序打印二叉树