Skip to main content

更高级别的 Zookeeper 客户端

项目描述

Kazoo-sasl
=====

![Travis Build](https://travis-ci.org/StephenSorriaux/kazoo-sasl.svg?branch=master)

![最新版本](https://img.shields. io/pypi/v/kazoo-sasl.svg)

![下载](https://img.shields.io/pypi/dm/kazoo-sasl.svg)

`kazoo-sasl` 是 `kazoo` 的一个分支
使用用于 Python 客户端的 SASL 为 [Apache Zookeeper](http://zookeeper.apache.org/)实现更高级别的 API 。

有关详细信息,请参阅 [完整文档](http://kazoo.rtfd.org/)。

许可证
-------

`kazoo-sasl` 在 Apache 许可证 2.0 下提供。

作者
-------

`kazoo` 是在 [Nimbus
项目](http://www.nimbusproject.org/) 下开始的,并通过与
开源社区已与
[Mozilla] (http://www.mozilla.org/) 和 [Zope
Corporation] (http://zope.com/) 的代码合并。此后,它聚集了一个
由五十多个贡献者组成的活跃社区。


<a name="2.6.0"></a>
## 2.6.0 (2018-07-24)

#### 功能

* **recipe:** 添加了 SASL 摘要 MD5 支持 ([533adbba](https: //github.com/python-zk/kazoo/commit/533adbbafdfb41c1bf01fdf3c188c063847b542b))

<a name="2.5.0"></a>
## 2.5.0 (2018-06-01)


#### 性能

* * *recipe:** 给 TreeCache 独立队列 ([4456f180](https://github.com/python-zk/kazoo/commit/4456f180735a0f8520bfc42474de9d27fa01bb2c))

#### Doc

* 正确记录支持的版本 ([f860de52](https://github.com/python-zk/kazoo/commit/f860de5284e8ba7d0ed4171d9e5c5bef41f6b64d))
* 添加许可证到 Wheel ([43d156de](https://github.com/python-zk /kazoo/commit/43d156de3d41173d7baf6e8edb4efa377b3732fc))
* 对贡献.md 的小调整 (#464) ([5837d11b](https://github.com/python-zk/kazoo/commit/5837d11bb541be1296e1b3)*** c1842b11ceb7e743

)

*recipe:** 允许非临时锁定 ([6f7a603d](https://github.com/python-zk/kazoo/commit/6f7a603de9f04ec46d9946c6f5b1cb6e2b913b63))

####

杂务 * drop python 2.6 compatible gevent ([2e8dcd38](https ://github.com/python-zk/kazoo/commit/2e8dcd3836d01640f07e8de911cdfb3639f97d20))
* 删除 debian 打包 (#468) ([a28423aa](https://github.com/python-zk/kazoo/commit/a28423aac7f33111388372dec50653a3091b9045))
* 停止捆绑 virtualenv ([af9b4cab](https://github.com/python -zk/kazoo/commit/af9b4cab39982d961647afca8119816ffe7bf5e6))
* 从 tox 中移除 python 3.3 ([cf66474b](https://github.com/python-zk/kazoo/commit/cf66474b27b4efc9f65e292434c2fcffb692434c2fcffb692434c2fcffb692434c2fcffb6957d34d)
e 指令*6 (https://github.com/python-zk/kazoo/commit/6e6627d58628dec11d127fc5508f9a1d16e9c317))

#### 错误修复

* 将 watch 作为关键字 arg 而不是位置 arg (#495) ([23850792](https://github .com/python-zk/kazoo/commit/2385079267db0bea6793c4f20588644381803a98))
* 需要 gevent >= 1.2,而不是 > 1.1 ([18f3531b](https://github.com/python-zk/kazoo/commit/18f3531b605119a547cfc4d5a4223b4b3f185405))
* 删除使用“异步”作为变量 ([225d3369](https ://github.com/python-zk/kazoo/commit/225d3369c7a0736125a9375951a079f70fbe9e79),关闭 [#455](https://github.com/python-zk/kazoo/issues/455))
* **核心:**
* 修复 gevent 1.3b1+ 超时导入 ([257b5896](https://github.com/python-zk/kazoo/commit/257b58961f7ddd9db04d6efa070739a1b0404487))
* 正确触发多个回调 ([0905c47b](https://github.com/python) -zk/kazoo/commit/0905c47bff3cfc42382daff0d5ac81189c8ba46d)) *
在 IAsyncResult.wait() (#487) 中解决竞争 ([4d268adf](https://github.com/python-zk/kazoo/commit/4d268adf9837836f05dde5ec81be0d7bbd759e)
食谱:**
* 当 TreeCache 刷新时 conn 挂起 ([11194137](https://github.com/python-zk/kazoo/commit/111941371daec00a2ecb5d8c29b9b1d35d6aa4ff))
* 意外异常破坏 TreeCache ([db0c2d4f](https://github.com/python- zk/kazoo/commit/db0c2d4f8ab5ecfb367b7b2accfd9c52c1c91fcd))

#### 重构* 在各种处理程序中统一队列工厂 ([ cbd02f5c

](https://github.com/python-zk/kazoo/commit/cbd02f5ccc6ea9e6dd6b5da01a0397ea649143a0)



2.4.0"></a>
## 2.4.0 (2017-06-14)

**PYTHON 支持的版本更改**:请注意 Kazoo 不再
在 Python 2.6 或 3.3 上进行测试。测试版本为 2.7、3.4、3.5、3.6 和 PyPy。KazooClient的
多端点支持可能无法在 2.6 上正常工作。

#### Bug修复

* 将遗漏的括号添加到 LockingQueue 函数调用。([88cf4aa7](https://github.com/python-zk/kazoo/commit/88cf4aa7bcd1437a44f6d3aeec34989c467fcf9d))
* **core:** 恢复导致 RuntimeError 的 PR #305 SetWatches ([a7b45390](https://github. com/python-zk/kazoo/commit/a7b45390f3720a33c9ad3896a8a185bfb2628839))

#### 功能

* pep8 所有的东西 ([92880342](https://github.com/python-zk/kazoo/commit/928803420721b81962e50d4e5610e), 关闭445](https://github.com/python-zk/kazoo/issues/445))
* 放弃Python 2.6/3.3官方支持,添加3.5/3.6测试([2faba9ff](https://github.com/python -zk/kazoo/commit/2faba9ff3bdeff151ac6c922bf65b2dcf9c7bd7b),关闭 [#441](https://github.com/python-zk/kazoo/issues/441))
* **核心:**
* 允许 KazooClient 主机中的多个端点 arg ([72a8d96c](https://github.com/python-zk/kazoo/commit/72a8d96ca188c3c2e93bd0243283539ebd6c16f1),关闭 [#411](https://github.com/python-zk/ kazoo/issues/411))
* 在支持 fds > 1023 时使用 epoll ([267e61b4](https://github.com/python-zk/kazoo/commit/267e61b4323bc13505e8933fa9b89d0591af3a69),关闭 [#171](https:/ /github.com/python-zk/kazoo/issues/171))
* **recipe:** 添加 TreeCache 配方 ([ec8b337e](https://github.com/python-zk/kazoo/commit/ec8b337e6f1a4ff12e669f4b96ca98fb37ee5d8a))



<a name="2.3.1"></a>
## 2.3.1 (2017-06-01)


#### Chore

* 更新 MANIFEST.in 以反映对文件名的更改 ([c9a38c5d](https:// github.com/python-zk/kazoo/commit/c9a38c5d650d6d92ff30fd3c1c792fc71db9ce02))
* 添加 travis 部署和更新 ZK 版本([7d5d59cb](https://github.com/python-zk/kazoo/commit/7d5d59cb049244b89625d621c9d91d9a44c4b051),关闭 [#436](https://github.com/python-zk/ kazoo/issues/436))

2.3.0 (2017-05-31)
------------------

请注意,有几十个合并未能更新
更改日志在这里。因此,这里的日志不应该被认为
是关于 2.3.0 中的更改的结论性的。

现在进行的更改以确保更改日志中的准确性更高,这些更改将出现
在未来的所有版本中。阅读提交历史以更好地
了解 2.2.1 和 2.3.0 之间合并的更改。

所有未来的提交都必须遵守新的 CONTRIBUTING.md 文档描述
如何标记提交,以便它们可以自动用于自动
生成准确的变更日志。

*警告:*这是支持 Python 2.6 的最后一个 Kazoo 版本。所有未来
版本都需要 Python 2.7 及更高版本。

### 功能

- 允许拥有观察者和不同大小的集群

### 错误处理

- \#372:完全解析 zookeeper
连接字符串中主机的多条记录

### 文档

- 修复配方示例,因此它们实际上通过连接到
动物园管理员。没有 start() 他们只是挂起并且不能被杀死。

2.2.1 (2015-06-17)
------------------

### Bug 处理

- 在 py3k 上使用 basestring 处理 NameError。

### 文档

2.2 (2015-06-15)
----------------

### 文档

### 功能

- 问题 \#234:添加对重新配置集群成员操作的支持

# ## 错误处理

- \#315:使用锁配方多次获取 kazoo 锁会
在使用获取时阻塞,即使指定了非阻塞(仅
当已获取/已经获取锁时)。
- \#318: 在退出寄存器需要 `*args` 和 `**kwargs` 而不是 args 和
kargs

### 文档

2.1 (2015-05-11)
--------------- -

### 功能

- 开始针对 Zookeeper 3.5.0 alpha 并明确地运行测试
在测试中配置 admin.serverPort 以避免端口冲突。Zookeeper
alpha 版本尚未得到官方支持。
- 将 eventlet *handler* 支持集成到 kazoo 中,以便与
[gevent, threading] 处理程序一起,现在可以
为需要(或想要)使用 eventlet 的项目(例如
在 openstack 社区中工作的项目)提供专用的 eventlet 处理程序。
`requirements_eventlet.txt` 文件列出了在使用
这个新处理程序时需要满足的可选 eventlet 要求

- 使用 `six` 很好地处理 kazoo 与
python 2.x 和 3.x 的交叉兼容性(减少/消除需要自定义
复制六个已经提供的兼容性代码)。
- 将 `state_change_event` 添加到
`kazoo_sasl.recipe.partitioner.SetPartitioner`,在每次
状态更改时设置。
- 添加一个 NonBlockingLease 配方。该配方允许在多台机器上安排例如 cron 作业
,以确保最多 N 个实例
将运行特定作业,并
在节点故障的情况下为优雅切换提供租约超时。

### 错误处理

- \#291:Kazoo 锁配方只是部分可重入,因为
多次调用获取将获得锁,但第一次
调用释放将删除底层锁。这会离开
X - 1 其他获取语句不受保护(并且不再
持有预期的锁)。为了解决这个问题,关于该
锁配方被重入的评论已被删除,并且多个获取
现在将在尝试时阻塞。
- \#78:Kazoo 现在使用套接字对而不是管道,使其
与 Windows 兼容。
- \#144, \#221:让 client.command 使用 IPv6 地址。
- \#216:修复了 ConnectionHandler 的超时。\_invoke。
- \#261: 在 / 下创建顺序 znode 不起作用。
- \#274:添加 server\_version() 重试(默认情况下将进行 4 次尝试
)以更好地处理 flakey 响应。
- \#271:修复了 SetPartitioner 中 KazooState.SUSPENDED 的处理。

- \#283:修复了在处理锁获取过程中参与方更改时 SetPartitioner 中的竞争条件。
- \#303:不要在随机输入作为主机字符串时崩溃。

### 文档

- \#222:在事务中提交的文档用于确保
仅提交一次,并且不是
事务中的操作是否返回所需结果的指示符。

2.0 (2014-06-19)
----------------

### 文档

- 扩展对 Python 3.4 的支持,弃用 Python 3.2。
- 问题 \#198:提到 Zake 是一个复杂的 kazoo 模拟测试
库。
- 问题 \#181:添加有关基本日志记录设置的文档。

2.0b1 (2014-04-24)
------------------

### API 更改

- Null 或 None 数据不再被视为“”。Pull req \#165,
Raul Gutierrez S 的补丁。这将影响您应该如何处理
znode 中的空数据与空字符串。
- 将 acl=[] 传递给 create() 现在可以正常工作,而不是
之前返回的 InvalidACLError。Raul Gutierrez S 在
PR \#164 中的补丁。
- 删除了对 zope.interface 的依赖。接口模块中的类
仅用于文档目的(问题
\#131)。

### 功能

- 日志记录级别已降低。
- 以前在 `logging.DEBUG` 级别记录现在记录在
`kazoo_sasl.loggingsupport.BLATHER` 级别 (5)。
- 以前在 `logging.INFO` 级别的一些低级别日志记录
现在记录在 `logging.DEBUG` 级别。
- 问题 \#133:
为测试支持引入一个新的环境变量 ZOOKEEPER\_PORT\_OFFSET,以
在不同的范围内运行测试集群。

### 错误处理

- 通过 add\_a​​uth() 进行身份验证时,将保存身份验证数据以
确保在重新连接时进行身份验证(就像
通过 KazooClient 的构造函数提供身份验证数据时的情况一样)。PR \#172,
Raul Gutierrez S 的补丁。
- 更改 gevent 导入以在使用较新的 gevent 时删除弃用警告
。PR \#191,Hiroaki Kawai 的补丁。
- 锁定配方未能使用客户端的 sleep\_func 导致
gevent 出现问题。问题\#150。
- 调用 DataWatch 或 ChildrenWatch 实例两次(装饰器)现在
会引发异常,因为只有一个函数可以与
单个观察者相关联。问题\#154。
- atexit 处理的另一个修复,以便在处理
连接时删除 atexit 处理程序。PR \#190,由 Devaev
Maxim 提供的补丁。
- 修复了 kazoo 线程处理程序的 atexit 处理,PR \#183。布赖恩威克曼的补丁

- 分区程序应正确处理挂起的连接并
恢复已分配状态(如果之前已分配)。
Manish Tomar的补丁。
- 问题 \#167:关闭从未启动的客户端会引发类型
错误。约书亚·哈洛的补丁。
- 将字典传递给 KazooClient。\_\_init\_\_() 实际上没有
正常工作。Ryan Uber 的补丁。
- 问题 \#119:处理程序超时采用随机间隔或
读取超时的最大值,以确保读取超时不使用负数

- 修复 lock.acquire 中异常捕获的顺序,因为它在
子异常之前捕获父异常。ReneSac 的补丁。
- 修复了 client.stop() 并不总是将客户端状态设置为
KeeperState.CLOSED 的问题。Jyrki Pulliainen 在 PR \#174 中的补丁。
- 问题 \#169:修复了管道泄漏到子进程中的问题。

### 文档

- 添加有关贡献配方的部分,
为现有配方添加维护者/状态信息。
- 添加有关交替使用 DataWatch 的说明。

1.3.1 (2013-09-25)
------------------

### 错误处理

- \#118、\#125、\#128:修复未知变量KazooClient
命令\_retry 参数处理。
- \#126:修复 KazooRetry.copy 以正确复制睡眠功能。
- \#118:正确的会话/套接字超时转换(int vs. float)。

### 文档

- \#121:添加关于需要
Zookeeper 3.4+ 服务器的 kazoo_sasl.recipe.queue.LockingQueue 的注释。

1.3 (2013-09-05)
----------------

### 功能

- \#115:限制我们在测试期间用于 SLF4J 的后端。
- \#112:添加 IPv6 支持。Dan Kruchinin 的补丁。

1.2.1 (2013-08-01)
------------------

### Bug 处理- 问题 \#108: 直接导入 kazoo_sasl.recipe.watchers

时循环导入失败
现在已经解决了。Watchers 和partitioner 从 kazoo_sasl.protocol.states 而不是 kazoo_sasl.client
正确导入KazooState。- 问题\#109:现在可以使用不能作为数据观察调用正确使用的部分 。所有函数都将使用 3 个 args 调用, 如果有参数错误,则回退到 2 个 args。- 问题 \#106、\#107:client.create\_async 没有 从返回的路径中删除更改根目录。







1.2 (2013-07-24)
----------------

### 功能

- KazooClient 现在可以更可靠地停止,即使它处于
长时间的重试睡眠状态。这利用了 KazooRetry 的新中断
功能,它可以将睡眠分解为
块,并调用一个中断函数来确定重试
是否应该提前失败。
- 问题 \#62、\#92、\#89、\#101、\#102:允许 KazooRetry 设置最大
期限,在连接失败丢失时正确转换,并
设置与客户端命令重试行为不同的连接重试行为
。Mike Lundy 的补丁。
- 问题\#100:更容易在线程
和连接模块中查看异常上下文。
- 问题\#85:增加日志的信息密度,并且不要阻止
在运行时动态重新配置日志级别。
- 同一节点的数据观察者不再“堆叠”。也就是说,如果
同一节点具有相同的监视
功能,同时发生 get 和 exists 调用,那么它只会被注册一次。此更改导致
Kazoo 的行为符合 Zookeeper 客户端规范关于重复手表
使用的行为。

### 错误处理

- 问题 \#53:如果 chroot 路径不存在,则在启动时引发警告,以便 在执行更多操作之前
应该创建 chroot 时更加明显。- Kazoo 以前会让相同的函数注册为


data-watch 或 child-watch 多次,然后
在被触发时多次调用它。这是不符合 Zookeeper 客户端
的行为,同一个 watch 现在只能为
每个 Zookeeper 客户端文档的相同 znode 路径注册一次。 - 问题 \#105:通过将client.py 中的模块
导入移动到模块范围来避免罕见的导入锁定问题。- 问题 \#103:允许无前缀的顺序 znode。- 问题 \#98:扩展测试 ZK 工具以 在某些版本的 Debian/Ubuntu 上使用不同的文件位置。- 问题 \#97:更新一些文档字符串以反映 处理程序的当前状态。- 问题 \#62、\#92、\#89、\#101、\#102:允许 KazooRetry 有一个最大值







最后期限,在连接失败时正确转换丢失,并
设置单独的连接重试行为与客户端命令重试行
为。Mike Lundy 的补丁。

### API 更改

- kazoo_sasl.testing.harness.KazooTestHarness 类直接继承
自 unittest.TestCase,您需要确保调用其
\_\_init\_\_ 方法。 - DataWatch在实例化期间
不再接受除了可选函数之外的任何参数。
附加选项现在
隐式为 True,用户可以在选择时忽略事件
。有关更多信息,请参阅 DataWatch API 文档。
- 问题 \#99:编写器无法关闭时引发更好的异常。

当编写器未能及时关闭时, 现在会引发从 KazooException 继承的 WriterNotClosedException 。

1.1 (2013-06-08)
----------------

### 功能

- 问题 \#93:向锁定/信号量获取方法添加超时选项。
- 问题 \#79 / \#90:添加将 WatchedEvent 传递给 DataWatch
和 ChildWatch 函数的功能。
- 关闭连接时遵守较大的客户端超时值。
- 向信号量配方添加一个 max\_leases 一致性检查。
- 问题 \#76:扩展测试帮助程序以允许
通过指定新的 ZOOKEEPER\_CLASSPATH
环境变量来自定义 Java 类路径。
- 问题\#65:允许非阻塞信号量获取。

### 错误处理

- 问题 \#96:在测试工具中提供 Windows 兼容性。
- 问题 \#95:处理反序列化连接响应的错误。
- 问题\#94:清理连接管道中的杂散字节。
- 问题 \#87 / \#88:取消后允许重新获取锁。
- 问题 \#77:在初始套接字连接中使用超时。
- 问题 \#69:仅在锁定和信号量配方中确保路径一次。
- 问题 \#68:关闭连接会导致观察者引发异常,这些异常假设在运行 命令
时连接不会关闭。- 问题 \#66:在发送另一个 ping 之前需要 ping 回复, 否则连接将被视为已死,并且



将引发 ConnectionDropped 以触发重新连接。
- 问题\#63:观察者没有在失去连接时被重置。 - 问题 \#58:创建不存在的节点然后删除
后,DataWatcher 无法重新注册更改。### API 更改- KazooClient.create\_async 现在支持 makepath 参数。- KazooClient.ensure\_path 现在有一个异步版本, ensure\_path\_async。1.0 (2013-03-26) ---------------- ### 功能- 添加了 LockingQueue 配方。队列首先锁定一个项目,然后 仅在调用 consume() 方法后将其从队列中删除。 如果第一个节点上发生错误,这使其他节点能够重新获取该项目 。


















### 错误处理

- 问题 \#50:避免混合
gevent/线程设置中的睡眠功能问题。
- 问题\#56:避免手表回调评估为假的问题。

1.0b1 (2013-02-24)
------------------

### 功能

- 重构内部连接处理程序以使用单线程。
它现在使用双端队列和管道来向 ZK 线程发出有
新命令要发送的信号,以便 ZK 线程可以发送它或检索
响应。在单个线程中串行处理 ZK 请求和响应
消除了对一堆锁定、可
窥视队列和两个线程在同一个底层
套接字上工作的需要。
- 问题 \#48:添加了重试帮助程序模块的文档。
- 问题 \#55:修复 os.pipe 文件描述符泄漏并引入
KazooClient.close 方法。该方法在测试中特别有用,
其中多个 KazooClients 在同一
进程中创建和关闭。

### 错误处理

- 问题 \#46:在进程
关闭时避免 GeneratorContextManager 中的 TypeError。
- 问题\#43:如果使用了allow\_missing\_node,则让DataWatch 返回节点数据


0.9 (2013-01-07)
----------------

### API 更改

- 当重试操作最终失败时,它现在会引发
kazoo_sasl.retry.RetryFailedError 异常,而不是将军
异常实例。RetryFailedError 也继承自基础
KazooException。

### 功能

- 对 Debian 打包规则的改进。

### 错误处理- 问题 \#39 / \#41:在会话 写入

期间处理连接丢失错误。
确保客户端连接重新建立到新的 ZK 节点(
如果可用)。
- 问题 \#38:在所有套接字上设置 CLOEXEC 标志(如果可用)。 - 问题 \#37 / \#40:在套接字
上选择调用期间处理超时错误。- 问题 \#36:即使在编写 器内部引发异常(例如重试操作 失败),也正确设置 ConnectionHandler.writer\_stopped。0.8 (2012-10-26) ----------------








### API 更改

- KazooClient.\_\_init\_\_ 将观察者参数作为其第二个
关键字参数。自 0.5 版以来,该参数不再有效
并被删除。

### 错误处理

- 问题 \#35: KazooClient.\_\_init\_\_ 没有将
retry\_max\_delay 传递给重试助手。
- 问题 \#34:处理套接字连接错误时要更加小心。

0.7 (2012-10-15)
----------------

### 功能

- DataWatch 现在有一个允许\_missing\_node 设置,允许
在节点上设置监视创建DataWatch 时不存在

- 添加新的队列配方,具有可选的优先级支持。
- 添加新的计数器配方。
- 添加了 debian 打包规则。

### 错误处理

- 问题 \#31 已修复:仅在 catch-all 调用中捕获 KazooExceptions。
- 问题 \#15 再次修复:强制睡眠延迟为浮动以安抚
gevent。 - 问题 \#29 已修复:DataWatch 和 ChildrenWatch在服务器断开连接
时正确重新注册他们的手表。0.6 (2012-09-27) ---------------- ### API 更改- 节点路径假定为 Unicode 对象。在 Python 2 下 ,纯 ascii 字符串也将被接受。节点值被视为 字节。字节类型是 Python 2 下 str 的别名。 - 以只读模式连接的 Zookeeper 服务器的新 KeeperState.CONNECTED\_RO 状态。













-对当前只读的服务器发出写入更改时出现新的 NotReadOnlyCallError 异常。

### 功能

- 添加对 Python 3.2、3.3 和 PyPy 的支持(仅适用于线程
处理程序)。
- 处理连接到 Zookeeper 3.4+ 只读服务器。 - 当以只读模式
连接到服务器时,自动对读/写服务器进行后台扫描。- 添加新的信号量配方。- 向客户端添加一个新的 retry\_max\_delay 参数,默认情况下 将重试延迟限制为最多一小时,无论指数 退避设置如何。- 向 KazooClient 添加新的 randomize\_hosts 参数,允许 禁用主机随机化。








### 错误处理

- 修复锁不处理中间锁竞争者
消失的错误。
- 修复了 set\_data 类型检查无法捕获 unicode 值的错误。
- 修复 gevent 0.13.x backport 的 peekable 队列的错误。
- 修复 PatientChildrenWatch 以使用处理程序特定的睡眠功能。

0.5 (2012-09-06)
----------------

跳过版本以反映变化的幅度。Kazoo 现在
是一个没有 C 绑定的纯 Python 客户端。此版本应该可以
在 PyPy 和 Jython 等替代 Python 实现上正常运行。
将来移植到 Python 3 也应该容易得多。

### 文档

- 对文档进行了重组,以处理
来自纯 Python 重构的新类和方法的位置。

### 错误处理此更改可能会引入新错误,但是由于 C 库和/或 C 绑定中的错误

,不再
可能出现完整的 Python 段错误。- 来自 C 库的可能段错误已消失。- 由于 C 库而导致的密码修改消失了。- 派对食谱在离开后没有将他们的参与标志设置为 False 。### 功能- 新的 client.command 和 client.server\_version API,公开 Zookeeper 的四个字母命令并提供对结构化 版本信息的访问。












- 为 get\_children 添加了 'include\_data' 选项以包含节点的
Stat 对象。
- 使用调试模式大幅增加记录数据。
现在可以看到与 Zookeeper 服务器的所有通信以帮助
调试。

### API 更改

- 测试助手已从 testing.\_\_init\_\_ 移至
testing.harness 模块。KazooTestCase 和 KazooTestHarness 的官方 API
仍然可以直接从测试中导入。
- 删除了 kazoo_sasl.handlers.util 模块。
- 现在在
kazoo 异常中为先前的 C 异常名称提供了向后兼容的异常类别名。
- Unicode 字符串现在可以很好地用于节点名称,并且可以正确
地与 unicode 对象相互转换。
- 客户端的 create 和 create\_async 方法的数据值参数
是可选的,默认为空字节字符串。
数据值必须是字节串。Unicode 值不再
被允许,并且会引发 TypeError。

0.3 (2012-08-23)
----------------

### API 更改

- 处理程序接口现在有一个 rlock\_object 供配方使用。

### 错误处理

- 使用更新的 zc-zookeeper-static 版本修复了密码错误,该版本可以
正确保留密码中的空字节。
- 修复了重新连接锤击,以便重新连接后重试
抖动并重试退避。 - 修复了在 set partitioner
中使用 threading.Condition 可能出现的错误。
Set partitioner 使用新的 rlock\_object 处理程序 API
为 gevent 获取适当的 RLock。
- 问题 \#17 已修复:使用 staticmethod 包装超时异常,以便
可以按预期直接使用它们。Bob Van Zant 的补丁。
- 修复了使用
过期会话 ID 无限期循环客户端重新连接的错误。

0.2 (2012-08-12)
----------------

### 文档

- 使用 AsyncResult 对象修复了对 start\_async 的文档引用,它
使用了 Event 对象。

### 错误处理

- 问题 \#16 已修复:gevent zookeeper 日志记录无法处理猴子
修补日志记录设置。现在设置了日志记录,以便使用 greenlet
在 gevent 下记录消息,否则使用线程一

- 修复了会话侦听器上与 ChildrenWatch 的 \#14 类似的错误。
- 问题 \#14 已修复:DataWatch 对其
正在监视的节点的处理不一致,不存在。DataWatch 还正确地生成了它的
\_get\_data 函数以避免阻塞会话事件。
- 问题 \#15 已修复:SequentialGeventHandler 的 sleep\_func 未
在类上适当设置,导致附加参数被
传递给 gevent.sleep。
- 问题 \#9 已修复:线程/greenlets 没有正常关闭。
处理程序现在有一个启动/停止,客户端在调用
启动和停止时使用它来关闭处理程序工作人员。这解决
了进程关闭时可能发出的
关于工人干净退出的错误和警告。
- 问题 \#12 已修复:gevent 0.13 不使用与
gevent 1.0 相同的 start\_new\_thread,这导致完全
猴子修补的环境由于错误的线程而停止。更新
为使用较旧的 kazoo 方法获取真正的线程模块
对象。

### API 更改

- KazooClient 处理程序现在正式公开为
KazooClient.handler,以便最终用户可以使用适当的同步对象

- 将 SetPartitioner 使用的 ChildrenWatcher 重构为在
recipe.watchers 下公开暴露的 PatientChildrenWatch。

### 弃用

- connect/connect\_async 已重命名为 start/start\_async 以
更好地匹配停止以指示连接处理。以前的
名字暂时是别名。

### Recipes

- 添加了 Barrier 和 DoubleBarrier 实现。

0.2b1 (2012-07-27)
------------------

### Bug 处理

- ZOOKEEPER-1318:SystemError 被捕获并作为
旧版本中正确的无效状态异常重新抛出
这个问题仍然有效的zookeeper python 绑定。
- ZOOKEEPER-1431:安装最新的 zc-zookeeper-static 库或
将打包的 ubuntu 用于 ubuntu 12.04 或更高版本。
- ZOOKEEPER-553:不通过此方法检查状态处理,我们
使用观察者以更简单的方式跟踪它,以确保我们知道
正确的状态。

### 功能

- 用于重试命令的带有抖动的指数退避。
- Gevent 0.13 和 1.0b 支持。
- Lock、Partition、SetPartitioner 和 Election 配方实现。
- 数据和儿童观看 API。
- 状态转换处理,监听器注册以处理
会话状态更改(选择在会话
到期时致命的应用程序等)
- Zookeeper 日志流重定向到
名为“Zookeeper”的 Python 日志通道。 - 具有对线程和 gevent异步环境
的处理程序支持的基本客户端库。



下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

kazoo-sasl-2.6.1.tar.gz (148.6 kB 查看哈希

已上传 source

内置分布

kazoo_sasl-2.6.1-py2.py3-none-any.whl (131.3 kB 查看哈希

已上传 py2 py3