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 | 连接zookeeper | start_async | timeout_exception | |
create | 创建节点 | create_async | NodeExistsError NoChildrenForEphemeralsError | NoNodeError ZookeeperError |
get | 获取节点的值 | get_async | ||
get_children | 获取子节点列表 | get_children_async | ||
get_acls | 获取节点ACL列表 | get_acls_async | ||
add_auth | 向服务器发送凭证 | add_auth_async | AuthFailedError | |
ensure_path | 递归创建路径 | ensure_path_async | ||
set | 设置节点的值 | set_async | BadVersionError NoNodeError ZookeeperError | |
set_acls | 设置节点ACL | set_acls_async | InvalidACLError | |
delete | 删除节点 | delete_async | NotEmptyError | |
set_hosts | 设置客户端主机列表 | ConfigurationError | ||
sync | 同步数据 | sync_async | ZookeeperError | |
exists | 检查节点是否存在 | exists_async | ||
reconfig | 重置集群配置 | reconfig_async | UnimplementedError 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(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对象。