当前位置: 首页 > 工具软件 > Kazoo > 使用案例 >

Kazoo2.6.1client模块

饶承宣
2023-12-01

KazooClient

初始化

KazooClient(hosts='127.0.0.1:2181', timeout=10.0, client_id=None, handler=None, default_acl=None,
 auth_data=None, read_only=None, randomize_hosts=True, connection_retry=None, command_retry=None, 
logger=None, keyfile=None, keyfile_password=None, certfile=None, ca=None, use_ssl=False, 
verify_certs=True, **kwargs)

hosts:逗号分隔的要连接的主机列表,默认为本机。

timeout:连接zookeeper的超时时间,单位为秒,默认为10。

client_id:zookeeper客户端id,用于重新建立以前的会话连接,默认为None。

handler:实现回调处理接口IHandler的类实例,默认为None。

default_acl:用于创建节点的默认ACL,默认为None。

auth_data:用于连接的身份验证凭据列表,参数值为add_auth方法接受的scheme, credential元组列表。默认为None。

read_only:Kazoo 0.6新增参数,需要zookeeper版本为3.4+。允许连接只读服务器,默认为None。

randomize_hosts:Kazoo 0.6新增参数,随机选择主机,默认为True。

connection_retry:Kazoo 1.2新增参数,用于与zookeeper重连的KazooRetry对象,也可以是用于创建KazooRetry对象的选项字典,默认为None。

command_retry:Kazoo 1.2新增参数,用于执行retry方法的KazooRetry对象,也可以是用于创建KazooRetry对象的选项字典,默认为None。

logger:Kazoo 1.2新增参数,用于代替模块全局日志实例的自定义日志记录程序,默认为None。

keyfile:用于身份验证的SSL密钥文件,默认为None。

keyfile_password:SSL密钥文件密码,默认为None。

certfile:用于身份验证的SSL证书文件,默认为None。

ca:用于身份验证的SSL CA文件,默认为None。

use_ssl:是否使用SSL,默认为False。

verify_certs:当使用SSL时,参数绕过certs验证,默认为True。

属性

handler:客户端使用的IHandler策略,提供对同步对象的访问。

retry(func,*args,**kwargs):用提供的参数运行指定的方法,如果因为zookeeper连接丢失而失败,则重试。

state:指示当前高级连接状态的KazooState属性。

client_state:返回最后一个Zookeeper客户端状态,是未简化的状态信息,通常不如简化的KazooState信息有用。

client_id:如果已连接,则返回此zookeeper会话的客户端id,否则返回None。客户端id是一个包含会话id和密码的元组。

connected:返回是否已建立zookeeper连接。

方法

方法说明异步版本异常
start连接zookeeperstart_asynctimeout_exception
create创建节点create_asyncNodeExistsError
NoChildrenForEphemeralsError
NoNodeError
ZookeeperError
get获取节点的值get_async 
get_children获取子节点列表get_children_async
get_acls获取节点ACL列表get_acls_async
add_auth向服务器发送凭证add_auth_asyncAuthFailedError
ensure_path递归创建路径ensure_path_async 
set设置节点的值set_async BadVersionError
NoNodeError
ZookeeperError
set_acls设置节点ACLset_acls_asyncInvalidACLError
delete删除节点delete_asyncNotEmptyError
set_hosts设置客户端主机列表 ConfigurationError
sync同步数据sync_async ZookeeperError
exists检查节点是否存在exists_async
reconfig重置集群配置reconfig_asyncUnimplementedError
NewConfigNoQuorumError
ReconfigInProcessError
BadVersionError
BadArgumentsError
command向服务器发送四字命令 ConnectionLoss
socket.error
add_listener添加监听方法  
remove_listener删除监听方法  
stop停止zookeeper会话  
restart重启zookeeper会话  
close释放客户端持有的资源  
server_version获取连接的zookeeper版本  
unchroot去除路径中的根目录  
transaction创建事务对象  

start(timeout=15):连接zookeeper。timeout为等待连接成功的时间,单位为秒。如果在指定的时间内没有成功连接,则产生timeout_exception异常。

create(path, value='', acl=None, ephemeral=False, sequence=False, makepath=False):创建一个具有指定值作为其数据的节点。path为节点路径。value为节点初始值。acl为ACL列表。ephemeral表示节点是否为临时节点,sequence表示节点为顺序节点,makepath表示当路径不存在时是否创建路径。返回新节点的真实路径。如果节点已经存在则产生NodeExistsError错误,如果父节点不存在则产生NoNodeError错误,如果父节点是临时节点则产生NoChildrenForEphemeralsError错误,如果value值过大或者服务器返回非零错误代码则产生ZookeeperError。

get(path, watch=None):获取节点的值。watch为监听回调函数,如果设置watch,则在删除节点或者设置节点数据操作成功时触发。返回值为一个包含节点值及ZnodeStat对象的元组。如果节点不存在则产生NoNodeError错误。如果服务器返回非零错误代码则产生ZookeeperError。

get_children(path, watch=None, include_data=False):获取路径的子节点列表。watch为监听回调函数,如果设置watch,则在删除节点或者在该节点下创建/删除子节点操作成功时触发。include_data表示是否返回节点的ZnodeStat信息。如果为True,则返回结果为一个包含子节点列表和ZnodeStat对象的元组。默认为False。如果节点不存在则产生NoNodeError错误。如果服务器返回非零错误代码则产生ZookeeperError。

get_acls(path):返回一个包含指定节点的ACL列表以及ZnodeStat信息的元组。如果节点不存在则产生NoNodeError错误。如果服务器返回非零错误代码则产生ZookeeperError。

add_auth(scheme, credential):将凭证发送到服务器。scheme为权限模式,默认支持digest、sasl。其中sasl需要安装pure-sasl库。credential值取决于scheme。如果验证成功返回True,如果失败会产生AuthFailedError错误,并且会话状态会设置为AUTH_FAILED。

ensure_path(path, acl=None):如果路径path不存在,则递归创建路径。acl为节点权限。

set(path, value, version=-1):设置节点的值。value为新的节点值,version为期望的要更新的节点版本。默认情况下value 的大小不能超过1MB,否则会产生ZookeeperError错误。返回值为节点值更新后的ZnodeStat对象。如果节点值设置成功,则会触发该节点调用get方法时,在该节点上设置的监听事件方法。如果版本不匹配,则会产生BadVersionError错误。如果节点不存在则产生NoNodeError错误。如果服务器返回非零错误代码则产生ZookeeperError。

set_acls(path, acls, version=-1):设置指定节点的ACL。acls为要设置的ACL对象列表。version为必须匹配的期望节点版本。如果节点存在,且版本匹配则会设置节点的ACL。如果版本不匹配,则会产生BadVersionError错误。如果节点不存在则产生NoNodeError错误。如果ACL不合法,则会产生InvalidACLError错误。如果服务器返回非零错误代码则产生ZookeeperError。

delete(path, version=-1, recursive=False):删除节点,version为期望的要删除的节点版本。如果为-1则表示匹配任何版本。如果节点存在,且版本匹配则会删除节点。recursive表示是否递归的删除指定节点及其子节点,默认为False。如果节点删除成功,则会触发该节点调用exists方法时设置的监听事件方法,或者该节点的父节点调用get_children时设置的监听事件方法。如果版本不匹配,则会产生BadVersionError错误。如果节点不存在则产生NoNodeError错误。如果节点存在子节点则会产生NotEmptyError错误。如果服务器返回非零错误代码则产生ZookeeperError。

set_hosts(hosts, randomize_hosts=None):Kazoo 1.4新增方法,设置此客户端使用的主机列表。hosts参数格式与初始化方法的hosts参数相同。当下一次需要查找一组主机时会将客户端设置为新的主机列表。此函数不影响当前连接状态。在当前版本,此函数不能改变根目录,如果新的主机列表使用新的根目录将会产生ConfigurationError。

sync(path):Kazoo 0.5新增方法,同步数据,阻塞直到响应被确认。path为节点路径。返回已同步的节点路径。如果服务器返回非零错误代码,则产生ZookeeperError错误。

exists(path, watch=None):检查节点是否存在。watch为监听回调函数,如果设置watch,则在创建/删除节点或者设置节点数据操作成功时触发。如果节点存在返回ZnodeStat,如果不存在返回None。如果服务器返回非零错误代码则产生ZookeeperError。

reconfig(joining, leaving, new_members, from_config=-1):重置集群配置。joining为要添加逗号分隔的服务器列表。leaving为要删除的逗号分隔的服务器列表。new_members为逗号分隔的新成员列表。from_config为当前配置的版本,默认为-1。如果不支持,则会产生UnimplementedError错误。如果新配置没有超过半数的选举节点与最后一次提交配置的leader连接并保持同步则会产生NewConfigNoQuorumError错误。如果正在进行另一个重新配置,则会产生ReconfigInProcessError错误。如果版本不匹配,则会产生BadVersionError错误。如果指定的服务器列表格式错误,则会产生BadArgumentsError错误。如果服务器返回非零错误代码则产生ZookeeperError。

command(cmd='ruok'):Kazoo 0.5新增方法,向当前zookeeper服务器发送四字管理命令。返回非结构化文本字符串。如没有链接打开会产生ConnectionLoss异常,或者当此命令使用的连接出现问题会产生socket.error错误。

add_listener(listener):添加一个连接状态改变时调用的方法。listener方法接受一个KazooState实例做为参数,用于表示状态转换后新的连接状态。listener方法必须是非阻塞的。

remove_listener(listener):删除监听方法。

stop():停止zookeeper会话。在尝试重新连接时,调用此方法重连将中止。当连接关闭时,会话失效,zookeeper上与会话关联的临时节点会被删除,会触发这些节点以及它们的父节点的监听事件。

restart():停止并重启zookeeper会话。

close():Kazoo 1.0新增方法,释放客户端持有的任何资源。在已停止的客户端被丢弃之前应该调用此方法。否则可能导致文件句柄泄漏。

server_version(retries=3):Kazoo 0.5新增方法,获取当前连接的zookeeper版本。版本以元组形式返回。

unchroot(path):如果path以根目录开头,则从path中去掉根目录。

transaction():Kazoo 0.6新增参数,需要zookeeper版本为3.4+。创建并返回一个TransactionRequest对象。事务可以由多个操作组成,这些操作可以作为单个原子单元提交。

start_async():异步连接zookeeper。返回一个兼容的Event对象,可以检查该连接是否为活动的。

create_async(path, value='', acl=None, ephemeral=False, sequence=False, makepath=False):异步创建节点。参数与create相同。

get_async(path, watch=None):异步地获取节点值。返回IAsyncResult对象。

get_children_async(path, watch=None, include_data=False):异步地获取路径的子节点列表。返回IAsyncResult对象。

get_acls_async(path):异步地获取指定节点的ACL及ZnodeStat信息。返回IAsyncResult对象。

add_auth_async(scheme, credential):异步的向服务器发送凭据。返回IAsyncResult对象。

ensure_path_async(path, acl=None):Kazoo 1.1新增方法,如果路径path不存在,则递归异步创建路径。返回IAsyncResult对象。

set_async(path, value, version=-1):异步地设置节点的值。返回IAsyncResult对象。

set_acls_async(path, acls, version=-1):异步地设置指定节点的ACL。返回IAsyncResult对象。

delete_async(path, version=-1):异步地删除节点。返回IAsyncResult对象。

sync_async(path):异步地同步数据。返回IAsyncResult对象。

exists_async(path, watch=None):异步检查节点是否存在。返回IAsyncResult对象。

reconfig_async(joining, leaving, new_members, from_config):异步地重置集群配置。返回IAsyncResult对象。

TransactionRequest

初始化

TransactionRequest(client)

创建zookeeper事务请求。client为客户端对象。事务提供一个构建对象来构建和提交一组原子操作。事务必须在发送之前提交。事务不是线程安全的,不应该同时从多个线程访问。TransactionRequest的committed只表示事务是否已经提交,而是否成功执行需要检查结果来确定。committed是用于防止事务重复提交的。

方法

create(path, value='', acl=None, ephemeral=False, sequence=False):将创建节点命令添加到事务。除了少一个makepath参数外,其他参数与KazooClient的create方法相同。返回新节点的真实路径。

delete(path, version=-1):将删除节点命令添加到事务。除了少一个recursive参数外,其他参数与KazooClient的delete方法相同。返回布尔值。

set_data(path, value, version=-1):将设置节点值命令添加到事务。参数与KazooClient的set方法相同。返回ZnodeStat对象。

check(path, version):将检查版本添加到事务。如果路径path与指定的版本version不匹配,则此命令失败并中止事务。返回布尔值。

commit():提交事务。返回一个包含事务中每个命令结果的列表。

commit_async():异步提交事务。返回IAsyncResult对象。

 类似资料: