跳转到主要内容

"高级Zookeeper客户端"

项目描述

Kazoo

Kazoo Awesome Testing Latest Version Reviewed by Hound

kazoo 为 Python 客户端提供了一个对 Apache Zookeeper 的高级 API 实现。

更多详细信息,请参阅 完整文档

许可

kazoo 采用 Apache License 2.0 许可。

作者

kazoo 项目起源于 Nimbus 项目,通过与开源社区的协作,将 MozillaZope 公司 的代码合并在一起。至今已经聚集了一个超过一百位贡献者的活跃社区。

2.10.0 (2024-01-28)

特性

  • ci:tox 中移除 codecov 步骤,因为它在 GA 中已执行 (#719) (ffa0ae9a)
  • 测试
    • 添加 Windows 平台测试 (31fdca6b)
    • 在测试套件中添加更多日志记录 (2c36d699)

测试

  • 更新测试的 ZK 版本 (1a23100a)
  • 移除 Python 3.7,添加 Python 3.11 和 Python 3.12 (e33a6e17)
  • 将 pypy 更新到最新版本 (383cdf8c)
  • 添加 SSL 测试 (be1b7723)
  • 当集群关闭时,不要在测试失败时抛出异常 (5851e406)

文档

  • 在文档中包含类型提示 (e24e1200)
  • 使用 .readthedocs.yaml 配置构建 (693cd487)
  • 现在有超过 50 位贡献者 (#703) (d7c44cd1)
  • 将构建徽标从 Travis 更改为 Actions (#675) (a43ef2bf)

日常事务

  • 将 mypy 添加到构建中 (#689) (8f608f84)
  • 迁移到 tox 4.x (0c564419)
  • 在 gh actions 中集成 flake8 & black (644eeb74)
  • 更新 pyflake,修复新警告 (f3b7ff71)
  • 将 black 依赖项添加到构建中 (951f7442)
  • 从 release/2.9 迁移更改 (#674) (cb2fe857)
  • 依赖关系
    • 将 actions/cache 从 3 升级到 4 (a440c91d)
    • 将 actions/setup-java 从 3 升级到 4 (aa219898)
    • 将 actions/setup-python 从 4 升级到 5 (1a5205c8)
    • 将 actions/checkout 从 3 升级到 4 (d9830661)
    • 将 actions/setup-python 从 2 升级到 4 (#695) (491cab3f)
    • 将 actions/cache 从 2 升级到 3 (1c0c4535)
    • 将 codecov/codecov-action 从 2 升级到 3 (b3dcad2d)
    • 将 actions/checkout 从 2 升级到 3 (d2a08d48)
  • 打包: 从 pyproject.toml 中移除冗余的 wheel 依赖 (#671) (161c6877)

重构

  • 无需指定 mock (#702) (92b071d3)
  • 删除 Travis 配置文件的后缀 (#705) (d224a520)
  • 移除对 gevent.lock 的不必要导入保护 (74ecc0f2)
  • 移除字符串插值,改用异常链式调用 (e38b5c5f)
  • 移除 'atexit.unregister' 的回端口 (7ade392d)
  • 替换为六位数的 py3 实现 (e05b50a1)

错误修复

  • 核心: 不需要始终执行 os.stat(fd) (b06ffd71)
  • 异常: 注册服务端 QUOTAEXCEEDED(-125) 异常 (6054d822)
  • 测试
    • 在测试用例之间清理 ZK 集群 (d218dc97)
    • 添加 .coveragerc (#718) (6dbf6062)
  • 测试: test_read_only 不再是暂时的。(6b40a437)

2.9.0 (2022-10-08)

日常事务

  • 迁移到 setup.cfg (#666) (5f7ae483)
  • ci
    • 测试 Python3.10 和 ZK 3.5.10, 3.6.3, 3.7.1 (#659) (bd627973)
    • 更好地指定触发 Github Actions 的方法 (#658) (1ea097d5)
    • 用 Github Actions 替换 Travis (8eb462f2)

文档

  • 修复简单的拼写错误,直到 -> until (85f1b5fc)

特性

  • 核心: 使 DNS 解析错误可重试 (#631) (e0810242)

错误修复

  • 核心
    • 使用 selectors 进行连接轮询,而不是在多线程、gevent、eventlet 中使用原始 select (#656) (4042a850)
    • 不允许响应阻塞请求和 ping 处理 (89e06603)
  • 配方
    • 修复 r/w 锁配方的死锁 (#650) (9bb84994,关闭 #649)
    • 修复来自 threading.Event 的弃用警告 (569c89cd)

2.8.0 (2020-07-11)

特性

  • 任务: 使用 Github 模板处理问题和 PR (#610) (eddc0976)
  • 核心
    • 使用严格的正则表达式来识别锁竞争者。 (cc8ce892)
    • 支持额外的锁竞争者模式 (225eeecb)
  • 测试
    • 禁用有问题的 hound-flake8-black 集成。 (75f62a0d)
    • 迁移到 pytest (de97d74b)
    • 添加 Python 3.8 并从测试套件中移除 Python 3.6 (#611) (e4f808f7)

性能

  • 核心: 在 threading.py 中使用 chain.from_iterable (#614) (13c73ec5)

错误修复

  • 核心
    • 处理 SSL_WANT_READ/WRITE 错误 (#619) (cbdc4749,关闭 #618)
    • 字符串字面量中的 'is' 语法错误 (#609) (6b6ffe62)
    • sync() 返回值应为非 chrooted (cbde70ac,关闭 #601)

日常事务

  • 核心: 更新矩阵:添加 pypy3,移除 py27 (522189da)
  • 测试: 在 codecov.io 上添加覆盖率报告 (bb475843)

2.7.0 (2020-03-13)

特性

  • CI: 仅在 CI 中保留 Python 3.{6,7} 并将 ZK 版本升级到最新版本 (#574) (c293aabf)
  • 核心
    • 在构建过程中运行 SASL Kerberos 测试 (5c461bdf)
    • 添加 create2 支持 (1d81f96a)
    • 使用关闭状态而不是丢失状态 (#573) (961b2f3b)
    • 改进 SASL 接口 (#546) (cd49b3fa)
  • 食谱: 添加对 curator SharedCount 食谱的支持 (#559) (88b657a0,关闭 #558)
  • 实用工具: 扩展 create_tcp_connection 实用工具 (#568) (ab0cd00c)

错误修复

  • CI: 仅部署一个作业 (0ba3634d)
  • 核心
    • 允许在 CONNECTING 状态下排队请求 (#374) (#588) (a636d7a6)
    • 实现带抖动的适当重试退避逻辑 (0bb0659c)
    • 当连接失败时,关闭 ConnectionHandler (#577) (#579) (c7e80503)
  • 食谱: 如果 znode 中存在 None,则崩溃 (#569) (ded79467)
  • 测试
    • 禁用 Server 的 JAAS isInitiator (933b38b5)
    • 禁用默认启用的 TCP 端口 (d7bed550)
    • 将 default_domain 值大写 (7fd22bfd)
    • 配置 Kerberos 时使用较弱的加密 (844df87a)
    • 使用 / 以 toxinidir 变量作为前缀,以确保确保-zookeeper-env.sh 的路径正确 (c4d42ca7)
    • 启动 ZK JVM 时指定 -Dfile.encoding=UTF-8 (5764da0b)

2.6.1 (2019-01-22)

错误修复

  • 客户端: 添加缺失的括号 (#550) (1452a48f)
  • 核心
    • 支持已弃用的 KazooRetry 参数 (#545) (4242da80)
    • 减少第一次 Connect() 请求的超时时间 (#540) (2ae392e6)
  • 处理程序: 如果处理程序停止运行,则立即调用所有已注册的回调函数 (#549) (d9e0e720)
  • 配方
    • 停止 ChildrenWatch 后不再有内存泄漏 (#543) (37bcda35)
    • 关闭 TreeCache 后不再有内存泄漏 (#524) (c48f2733)

2.6.0 (2018-11-14)

特性

  • 核心
  • 测试
    • 将Zookeeper 3.5.2-alpha更新到3.5.4-beta (30330915,关闭 #477)
    • 将Zookeeper版本从3.4.10更新到3.4.13 (287749b4)

错误修复

  • 核心
    • 确保超时参数为正 (#534) (8c5ce118)
    • 当include_data=True时,get_children使用GetChildren2类型 (#514) (901cba7a)
    • 允许在RO和RW模式下进行认证 (2320ab39)
    • 重新连接时使用认证数据的副本 (#509) (de20be91)
    • 将KazooRetry更改为在整个退避间隔内均匀抖动 (#521) (60366d2c)
  • recipe: 如果条目已被消费,则在队列recipe中删除锁节点 (7a8167de)

文档

  • 将徽章链接到travis和pypi (#528) (367a1df3)
  • 为pypi指定正确的描述类型 (cc4006e6)
  • 删除损坏的下载徽章 (47e07a96)
  • core: 修复损坏的zookeeper程序员指南链接 (8ecf8a50)

2.5.0 (2018-06-01)

性能

  • recipe: 给TreeCache独立的队列 (4456f180)

文档

  • 正确记录支持的版本 (f860de52)
  • 为Wheel添加许可 (43d156de)
  • 对contributing.md进行小幅度调整 (#464) (5837d11b)

特性

  • recipe: 允许非短暂锁定 (#6f7a603d) (6f7a603d)

日常事务

错误修复

  • 将watch作为关键字参数而不是位置参数传递 (#495) (23850792)
  • 需要gevent >= 1.2,而不是> 1.1 (18f3531b)
  • 删除变量“async”的使用 (225d3369,关闭 #455)
  • 核心
    • 修复gevent 1.3b1+超时导入 (257b5896)
    • 正确触发多个回调 (0905c47b)
    • 解决IAsyncResult.wait()中的竞争 (#487) (4d268adf)
  • 配方
    • 当TreeCache刷新时,conn挂起 (11194137)
    • 意外异常会破坏TreeCache (db0c2d4f)

重构

  • 在各个处理器中统一队列工厂(cbd02f5c

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上可能无法正常工作。

错误修复

  • 为LockingQueue函数调用添加缺失的括号。(88cf4aa7
  • 核心:撤销PR #305 SetWatches,该PR导致RuntimeError(a7b45390

特性

  • pep8所有事物(92880342,关闭#445
  • 取消Python 2.6/3.3的官方支持,添加3.5/3.6测试(2faba9ff,关闭#441
  • 核心
    • 允许在KazooClient的hosts参数中具有多个端点(72a8d96c,关闭#411
    • 当可用时使用epoll以支持fds > 1023(267e61b4,关闭#171
  • 配方:添加TreeCache配方(ec8b337e

2.3.1 (2017-06-01)

日常事务

  • 更新MANIFEST.in以反映文件名更改(c9a38c5d
  • 添加travis部署并更新ZK版本(7d5d59cb,关闭#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连接字符串中主机的多个记录

文档

  • 修复配方示例,使它们通过连接到ZooKeeper真正工作。没有start()它们会挂起并且不能被杀死。

2.2.1 (2015-06-17)

错误处理

  • 在py3k上处理NameError与basestring。

文档

2.2 (2015-06-15)

文档

特性

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

错误处理

  • #315:使用lock配方多次获取kazoo锁时,即使指定了非阻塞,也会在acquire时阻塞(只有当锁已被/已被获取时)。
  • #318:退出时register接受*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社区工作的项目)提供专用的事件处理器。当使用此新处理器时,requirements_eventlet.txt文件列出了需要满足的可选eventlet需求。
  • 使用six来优雅地处理kazoo与python 2.x和3.x的兼容性(减少/消除需要自定义兼容性代码的需求,这些代码复制了six已提供的功能)。
  • kazoo.recipe.partitioner.SetPartitioner添加state_change_event,该事件在每个状态变化时都会设置。
  • 添加一个非阻塞租约配方。该配方允许例如在多台机器上安排的cron作业确保最多有N个实例运行特定作业,并在节点失败的情况下提供租约超时以实现优雅的交接。

错误处理

  • 问题#291:Kazoo锁配方只部分可重入,即多次调用获取锁会获得锁,但第一次调用释放时会移除底层锁。这会使X-1个其他获取语句不受保护(并且不再持有预期的锁)。为了解决这个问题,已删除有关该锁配方可重入的注释,并且现在在尝试多次获取时将阻塞。
  • 问题#78:Kazoo现在使用socketpairs而不是管道,使其与Windows兼容。
  • 问题#144,#221:使client.command能够与IPv6地址一起使用。
  • 问题#216:修复了ConnectionHandler._invoke的超时。
  • 问题#261:在/下创建顺序znode不起作用。
  • 问题#274:添加server_version()重试(默认尝试4次)以更好地处理不可靠的响应。
  • 问题#271:修复了SetPartitioner中处理KazooState.SUSPENDED时的处理。
  • 问题#283:修复了SetPartitioner在处理锁获取时在party更改时的竞争条件。
  • 问题#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数据不再被视为""。拉取请求#165,Raul Gutierrez S补丁。这将影响您如何处理znode中的null数据与空字符串。
  • 将acl=[]传递给create()现在按预期正常工作,而不是像以前那样返回InvalidACLError。由Raul Gutierrez S在PR #164中修复。
  • 删除了对zope.interface的依赖。接口模块中的类仅用于文档目的(问题#131)。

特性

  • 日志级别已降低。
    • 之前在logging.DEBUG级别记录的日志现在在kazoo.loggingsupport.BLATHER级别(5)记录。
    • 一些之前在logging.INFO级别记录的低级日志现在在logging.DEBUG级别记录。
  • 问题#133:引入新的环境变量ZOOKEEPER_PORT_OFFSET,以支持测试,在另一个范围内运行测试集群。

错误处理

  • 通过add_auth()进行身份验证时,将保存auth数据以确保在重新连接时进行身份验证(就像通过KazooClient构造函数提供auth数据时一样)。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。Brian Wickman补丁。
  • 分区器应正确处理挂起的连接,并在之前已分配的情况下恢复分配的状态。Manish Tomar补丁。
  • 问题#167:关闭从未启动的客户机会引发类型错误。Joshua Harlow补丁。
  • 将字典传递给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 与 float)。

文档

  • #121:添加了关于 kazoo.recipe.queue.LockingQueue 需要 Zookeeper 3.4+ 服务器的说明。

1.3 (2013-09-05)

特性

  • #115:在测试期间限制我们使用的 SLF4J 后端。
  • #112:添加了 IPv6 支持。由 Dan Kruchinin 提交补丁。

1.2.1 (2013-08-01)

错误处理

  • 问题 #108:当直接导入 kazoo.recipe.watchers 时,现在已解决的循环导入失败问题。观察器和分区器现在正确地从 kazoo.protocol.states 而不是 kazoo.client 导入 KazooState。
  • 问题 #109:现在可以使用部分作为数据观察器的调用。所有函数都将使用 3 个参数调用,并在参数错误的情况下回退到 2 个参数。
  • 问题 #106, #107:client.create_async 没有从返回的路径中删除更改根。

1.2 (2013-07-24)

特性

  • KazooClient 现在可以更可靠地停止,即使它在长时间的重试睡眠中。这利用了 KazooRetry 的新中断功能,该功能可以将睡眠分解为块,并调用中断函数以确定是否应提前失败重试。
  • 问题 #62, #92, #89, #101, #102:允许 KazooRetry 有一个最大截止日期,在连接失败到 LOST 时进行适当转换,并从客户端命令重试行为中设置单独的连接重试行为。由 Mike Lundy 提交补丁。
  • 问题 #100:使线程和连接模块中的异常上下文更易于查看。
  • 问题 #85:增加日志的信息密度,并在运行时不要阻止动态重新配置日志级别。
  • 相同节点的数据观察器不再“堆叠”。也就是说,如果对于同一节点发生 get 和 exists 调用,并且使用相同的观察函数,则它只注册一次。此更改导致 Kazoo 在重复观察使用方面遵循 Zookeeper 客户端规范。

错误处理

  • 问题 #53:如果 chroot 路径不存在,则在启动时抛出警告,以便在执行更多操作之前更明显地创建 chroot。
  • Kazoo 之前会允许将同一函数多次注册为数据观察器或子观察器,并在触发时多次调用它。这不符合 Zookeeper 客户端行为,现在每个 Zookeeper 客户端文档中,对于相同的 znode 路径,同一观察只能注册一次。
  • 问题 #105:通过将 client.py 中的模块导入移动到模块作用域来避免罕见的导入锁定问题。
  • 问题 #103:允许无前缀的顺序 znode。
  • 问题 #98:扩展测试 ZK 适配器,以便在某些版本的 Debian/Ubuntu 上使用不同的文件位置。
  • 问题 #97:更新一些文档字符串以反映当前处理器的状态。
  • 问题 #62, #92, #89, #101, #102:允许 KazooRetry 有一个最大截止日期,在连接失败到 LOST 时进行适当转换,并从客户端命令重试行为中设置单独的连接重试行为。由 Mike Lundy 提交补丁。

API更改

  • kazoo.testing.harness.KazooTestHarness 类直接继承自 unittest.TestCase,您需要确保调用其 __init__ 方法。
  • DataWatch 现在在实例化时不再接受任何参数,除了可选的函数。额外的选项现在隐式为 True,用户可以选择忽略事件。有关更多信息,请参阅 DataWatch API 文档。
  • 问题 #99:当写入器未能关闭时,抛出更好的异常。当写入器未能及时关闭时,现在会抛出继承自 KazooException 的 WriterNotClosedException。

1.1 (2013-06-08)

特性

  • 问题 #93:为 lock/semaphore acquire 方法添加超时选项。
  • 问题 #79 / #90:为 DataWatch 和 ChildWatch 函数添加传递 WatchedEvent 的能力。
  • 关闭连接时尊重大的客户端超时值。
  • 在信号量配方中添加 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)

特性

  • 添加了锁定队列配方。队列首先锁定一个项目,并且只有在调用 consume() 方法之后才将其从队列中移除。这使其他节点能够在第一个节点发生错误时重新获取项目。

错误处理

  • 问题 #50:避免在混合 gevent/threading 设置中 sleep 函数的问题。
  • 问题 #56:避免 watch 回调计算为 false 的问题。

1.0b1 (2013-02-24)

特性

  • 重构了内部连接处理程序以使用单个线程。现在它使用双端队列和管道来通知 ZK 线程有新的命令要发送,或者检索响应。在单个线程中串行处理 ZK 请求和响应消除了大量锁定、可查看队列以及两个线程在相同基本套接字上工作的需要。
  • 问题 #48:为重试辅助模块添加了文档。
  • 问题 #55:修复 os.pipe 文件描述符泄漏并引入 KazooClient.close 方法。该方法在测试中特别有用,在测试中,多个 KazooClient 在同一进程中创建和关闭。

错误处理

  • 问题 #46:避免在进程关闭时在 GeneratorContextManager 上出现 TypeError。
  • 问题 #43:如果使用 allow_missing_node,让 DataWatch 返回节点数据。

0.9 (2013-01-07)

API更改

  • 当重试操作最终失败时,它现在引发 kazoo.retry.RetryFailedError 异常,而不是一个通用的 Exception 实例。RetryFailedError 还继承自基础 KazooException。

特性

  • Debian 打包规则的改进。

错误处理

  • 问题 #39 / #41:处理会话写入期间连接断开错误。如果可用,确保客户端连接重新建立到新的 ZK 节点。
  • 问题 #38:在可用时在所有套接字上设置 CLOEXEC 标志。
  • 问题 #37 / #40:处理套接字 select 调用期间的超时错误。
  • 问题 #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 现在有一个 allow_missing_node 设置,允许在创建 DataWatch 时设置在节点上不存在时的监视。
  • 添加了新的 Queue 配方,具有可选的优先级支持。
  • 添加了新的 Counter 配方。
  • 添加了 Debian 打包规则。

错误处理

  • 问题 #31 已修复:仅在全局捕获中捕获 KazooExceptions。
  • 问题 #15 已修复:强制将 sleep 延迟设置为浮点数以平息 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+只读服务器。
  • 当连接到只读模式的服务器时,自动在后台扫描读写服务器。
  • 添加了新的Semaphore配方。
  • 向客户端添加了新的retry_max_delay参数,默认情况下将重试延迟限制在最长一小时,无论指数退避设置如何。
  • 向KazooClient添加了新的randomize_hosts参数,允许禁用主机随机化。

错误处理

  • 修复了锁未处理中间锁竞争者消失的bug。
  • 修复了set_data类型检查失败,未能捕获unicode值的bug。
  • 修复了gevent 0.13.x回滚peekable队列的bug。
  • 修复了PatientChildrenWatch使用特定于处理程序休眠函数的bug。

0.5 (2012-09-06)

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

文档

  • 文档已重构以处理纯Python重构后的新类和方法位置。

错误处理

此更改可能会引入新的bug,但是不再有可能由于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仍可直接从testing导入。
  • 已删除kazoo.handlers.util模块。
  • 目前为kazoo异常中的先前C异常名称提供向后兼容的异常类别名。
  • Unicode字符串现在适用于节点名称,并正确转换为和从Unicode对象。
  • 客户端的create和create_async方法的data值参数现在是可选的,默认为空字节字符串。数据值必须是字节字符串。不再允许Unicode值,并且将引发TypeError。

0.3 (2012-08-23)

API更改

  • 处理程序接口现在有一个rlock_object,供配方使用。

错误处理

  • 使用更新的zc-zookeeper-static发布版修复了密码bug,正确保留了密码中的空字节。
  • 修复了重新连接锤击,以便重新连接遵循重试抖动和重试退避。
  • 修复了在设置分区器中使用threading.Condition的可能bug。设置分区器使用新的rlock_object处理程序API获取为gevent适当的RLock。
  • 问题#17已修复:使用staticmethod包装超时异常,以便可以直接按预期使用。Bob Van Zant提供的补丁。
  • 修复了使用过期的会话ID无限期循环重新连接客户端的bug。

0.2 (2012-08-12)

文档

  • 修复了使用AsyncResult对象的start_async文档引用,它使用Event对象。

错误处理

  • 问题 #16 已修复:gevent zookeeper 日志未能处理猴子补丁的日志设置。现在日志设置使用 greenlet 来记录 gevent 下的消息,其他情况下使用线程。
  • 修复了与 #14 类似的子监听器 ChildrenWatch 的错误。
  • 问题 #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,以更好地与 stop 匹配以表示连接处理。前一个名称暂时作为别名。

食谱

  • 添加了 Barrier 和 DoubleBarrier 实现。

0.2b1 (2012-07-27)

错误处理

  • ZOOKEEPER-1318:在旧的 zookeeper python 绑定中捕获并重新抛出作为无效状态异常的系统错误,其中此问题仍然有效。
  • ZOOKEEPER-1431:安装最新的 zc-zookeeper-static 库或使用 ubuntu 12.04 或更高版本的打包 ubuntu。
  • ZOOKEEPER-553:状态处理未通过此方法检查,我们使用更简单的方法与监视器一起跟踪它,以确保我们知道正确的状态。

特性

  • 用于重试命令的带有抖动的指数退避。
  • 支持 gevent 0.13 和 1.0b。
  • Lock、Party、SetPartitioner 和 Election 食谱实现。
  • 数据和子监视 API。
  • 使用注册到处理会话状态变化的监听器处理状态转换(选择在会话过期时终止应用程序等)。
  • 将 Zookeeper 日志流重定向到名为 'Zookeeper' 的 Python 日志通道。
  • 具有处理程序支持用于线程和 gevent 异步环境的基客户库。

项目详情


下载文件

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

源分布

kazoo-2.10.0.tar.gz (183.3 kB 查看哈希值)

上传时间 源码

构建版本

kazoo-2.10.0-py2.py3-none-any.whl (148.9 kB 查看哈希值)

上传时间 Python 2 Python 3

支持者