sheauren / ez_zk_client

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

version change

0.0.3 add get_children mapping kazoo

0.0.2 add ensure_path/exists mapping kazoo

0.0.1 fisrt version

ez_zk_client install

pip install ez_zk_client

example connect/disconnect

from ez_zk_client import ZkClient
client = ZkClient(hosts='localhost:2181')
#client.connect(wait_connected=True)
client.connect()
client.disconnect()

example create_path

client.create_node('/pytest','for pytest')

example create_ephemeral & get value/status

client.alive('/pytest/online','create oneline path, offlne auto disapear')
val,stat =  client.get_data('/pytest/online')

example listen node

def node_data_change(node_path, data):
    print('data change:',data) # new data

client.create_node("/testing/test_listener", 'old data')    
client.add_node_listener("/testing/test_listener", node_data_change)
client.set_data("/testing/test_listener", "new data")

example listen children

def children_change(node_path,data):
    # fire twice time
    print(data) # children list: ['child1'] in first time
    print(data) # children list: ['child1','child2'] in second time

client.ensure_path('/testing/listen_children')
client.add_children_listener('/testing/listen_children',children_change)
client.alive(f'/testing/listen_children/child1')
client.alive(f'/testing/listen_children/child2')
    

example lock single resource

client.alive("/testing/single_resource/ALIVE", 'http://localhost:3388')
locker = client.lock_single_resource("/testing/single_resource/ALIVE")
# locker.path=='/testing/single_resource'
with locker: # auto release
    api,stat = client.get_data(locker.path)
    # access api

example lock pool resource

inserted_path = client.insert_pool_resource('/testing/resource_pool', 'http://localhost:10001')
inserted_path = client.insert_pool_resource('/testing/resource_pool', 'http://localhost:10002')
inserted_path = client.insert_pool_resource('/testing/resource_pool', 'http://localhost:10003')
locker1 = client.use_pool_resource('/testing/resource_pool')
api1,stat = client.get_data(locker.path) # http://localhost:10001
locker2 = client.use_pool_resource('/testing/resource_pool')
api2,stat = client.get_data(locker.path) # http://localhost:10002
locker3 = client.use_pool_resource('/testing/resource_pool')
api3,stat = client.get_data(locker.path) # http://localhost:10003

About


Languages

Language:Python 99.8%Language:Shell 0.2%