[英]How to re-use ZK session with KazooClient?
我有不同的函數調用ZKNode並更改ZkPath。 目前,我正在每個函數中啟動Zk(zk.start)會話,並進行zk.get / zk.stop。 有沒有一種方法可以啟動一個zk會話並繼續重復使用同一會話,直到完成操作?
from kazoo.client import KazooClient
zk_hosts = [ host1:2181, host2:2181, host3:2181]
def get_path_1(path):
try:
zk = KazooClient(hosts=zk_hosts, timeout=3000)
zk.start()
except Exception as e:
log.fatal(e)
if zk.exists(path):
k = zk.get(path)
else:
print "ZK Path {0} does not exist".format(path)
return k
def get_path_3(path2):
try:
zk = KazooClient(hosts=zk_hosts, timeout=3000)
zk.start()
except Exception as e:
log.fatal(e)
if zk.exists(path2):
k = zk.get(path2)
else:
print "ZK Path {0} does not exist".format(path)
return k
由於KazooClient是線程安全的,因此您可以共享實例:
zk_hosts = [ host1:2181, host2:2181, host3:2181 ]
zk = KazooClient(hosts=zk_hosts, timeout=3000)
zk.start()
def get_path(path):
if not zk.exists(path):
print "ZK path {0} does not exist".format(path)
return None
return zk.get(path)
def get_already(path):
return zk.get(path)
等等。
作為建議,可以在zk.exists
和zk.get
調用之間進行更改(例如,如果其他人刪除了該條目)。 因此,您應該測試存在性並進行交易。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.