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")))


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM