高级管理员客户端
kazoo-sasl的Python项目详细描述
Kazoo Sasl
==
![特拉维斯建设](https://travis-ci.org/stephensoriaux/kazoo-sasl.svg?分支=主)
![最新版本](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提供。
authors
----
`kazoo`在[nimbus
项目(http://www.nimbus project.org/)下启动,通过与
的合作,开源社区已经合并。代码来自
[mozilla](http://www.mozilla.org/)和[zope
公司(http://zope.com/)。此后,它聚集了一个活跃的
社区,有50多个贡献者。
<;a name="2.6.0">;<;/a>;
2.6.0(2018-07-24)
功能
**recipe:*添加了SASL摘要MD5支持([533ADBBA](https://github.com/python zk/kazoo/commit/533ADBBAFB41C1BF01FDF3C188C063847B542B))
<;a name="2.5.0">;<;/a>;
《2.5.0(2018-06-01)2.5.0(2018-06-01)
;doc
*正确记录支持的版本([f860de52](https://github.com/python zk/kazoo/commit/f860de5284e8ba7d0ed4171d9e5c5bef41f6b64d))
*向车轮添加许可证([43d156de](https://github.com/python zk/kazoo/commit/43d156de3d41173d7baf6e8edb4efa377b3732fc))
*对contribution.md进行了一些小调整(464)【5837D11B】(https://github.com/python-zk/kazoo/commit/5837D111B11BB51B1296E1B3C1842B18CEB7E743DB7E743D4)
35<<
****食谱:**允许非短暂性锁定([6F7A603D](https://github.com/pythonzk/kazoo/commit/6F7A603DE6f7a6039f7a60141414141414141414141414141414141414B1B1296B1B1B1B1296B1B1B1B118B118C18418B18412br/>家务
*删除python 2.6兼容的gevent([2e8dcd38](https://github.com/python zk/kazoo/commit/2e8dcd3836d01640f07e8de911cdfb3639f97d20))
*删除debian包(468)([a28423aa](https://github.com/python zk/kazoo/commit/a28423aac7f3111388372dec50653a091b9045))
*停止捆绑virtualenv([af9b4cab](https://github.com/python zk/kazoo/commit/af9b4cab39982d961647afca8119816ffe7b5e6))
*从tox中删除python 3.3([cf66474b](https://github.com/python zk/kazoo/commit/cf66474b27b4efc9f65e292434c2fcfb697d34d))
*删除"轻松安装"说明【6E66627D5】(https://github.com/python-zk/kazoo/commit/6E66627D58627D58628D127FC5508F9A11D116E9C317))
\\\\\\\\\\f9A11111111111111111F11D116E9E9E9E9E1111111111f9A11D116E111111111111111111f9A15;
*将wawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaa98))
*需要gevent>;=1.2,而不是>;1.1([18f3531b](https://github.com/python zk/kazoo/commit/18f3531b60519a547cfc4d5a4223b4b3f185405))
*删除"async"作为变量的用法([225d3369](https://github.com/python zk/kazoo/commit/225d3369c7a076125a9375951a079f70fbe9e79),关闭[455](https://github.com/python zk/kazoo/issues/455))
***核心:**
*修复gevent 1.3b1+超时导入([257b5896](https://github.com/python zk/kazoo/commit/257b58961f7ddd9db04d6efa0739a1b0404487))
*正确触发多个回调([0905C47B](https://github.com/python zk/kazoo/commit/0905C47FF3CFC42382DAff0D5AC81189C8BA46D))
*在iasyncresult.wait()(487)([4D268ADF](https://github.com/python zk/kazoo/commit/4D268ADF9837836F05DDE5EC81BE0D7BBD759E78)中解析race
**recipe:**正在刷新([11194137](https://github.com/python zk/kazoo/commit/111941371daec00a2ecb5d8c29b9b1d35d6aa4ff))
*意外异常中断树缓存([db0c2d4f](https://github.com/巨蟒ZK/kazoo/commit/db0c2d4f8ab5ecfb367b7b7b2ccfd9c52c2c1c1C91fcd))
\\\\\\\\\\\\\\r;
*在各种处理程序中统一队列工厂(cbd02f5c)(https://github.com/python zk/kazoo/kazoo/commit/cbd02f5ccc6ea9e6dd6b6b101a039a01a039a0397ea649191919143a01a01a039a01a01a039a0397a037a040404040404040404">;<;/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上正常工作。
【88CF4AA7】(https://github.com/python zk/kazoo/commit/88CF4AA7CBCD1437A4436D3AEEC34989C467FCF9D))
****核心:*还原导致运行时错误的设置表(a7b45390】(https://github.com/python zk/kazoo/commit/a7b455390f373A3A33c9a399a3838b45494949494990】(https://a7b45390】(https://a7b4549494990】(https://a7b4539090】(https://github.com/python zk/python zk/python zk/kazob/kazoo/kazo>
*PEP8所有东西([92880342](https://github.com/python zk/kazoo/commit/928803420721b81962e50d425610e62b0c12e438),关闭[445](https://github.com/python zk/kazoo/issues/445))
*删除python 2.6/3.3官方支持,增加3.5/3.6测试([2fab9ff](https://github.com/python zk/kazoo/commit/2fab9ff3bdef51ac6c922bf65b2dcf9c7bd7b)。关闭[441](https://github.com/python zk/kazoo/issues/441))
**core:**
*允许kazooclient hosts arg([72a8d96c](https://github.com/python zk/kazoo/commit/72a8d96ca188c3e93bd0243283539ebd6f1)中的多个终结点,关闭[411](https://github.com/python zk/kazoo/issues/411))
*如果可以支持fds>;1023([267e61b4](https://github.com/python zk/kazoo/commit/267e61b4323bc13505e8933fa9b89d0591af3a69),关闭[171](https://github.com/python zk/kazoo/issues/171))
**配方:**添加treecache配方([ec8b337e](https://github.com/python zk/kazoo/commit/ec8b337e6f1a4ff12e669f4b96ca98fb37ee5d8a))
<;a name="2.3.1">;<;/a>;
2.3.1(2017-06-01)
([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之间合并的更改。
changelog.
*警告:*这是最后一个支持python 2.6的kazoo版本。所有未来的
版本都需要python 2.7及更高版本。
###文档
-修复配方示例,因此它们实际上通过连接
zookeeper来工作。如果没有开始,它们只会挂起来,不会被杀死。
>2.2.1(2015-06-17)
-
错误处理
-基于py3k上的基字符串处理namelerror错误。
相关文档
<2.2(2015-06-15)
-
文件
###功能
-问题234:添加对重新配置群集成员身份操作的支持
-\#315:使用锁配方多次获取kazoo锁在使用acquire时将
阻塞,即使指定了非阻塞(仅当锁已被/已被获取时
)。
-\ 318:在退出寄存器时,采用`*args`和`**kwargs`非args和
kargs
###文档
2.1(2015-05-11)
————
\尚未正式支持zookeeper alpha版本。
-将eventlet*handler*支持集成到kazoo中,以便与
[gevent,线程]处理程序现在可以有一个专用的eventlet
处理程序,用于需要(或希望)使用eventlet的项目(例如在openstack社区工作的项目)。
`Requirements\u eventlet.txt`文件列出了使用此新处理程序时需要满足的可选eventlet
要求。
-使用"six"可以很好地处理kazoo与
python 2.x和3.x的交叉兼容性(减少/消除自定义的
兼容代码,它复制了6个已经提供的内容)。
-将"state_change_event"添加到
"kazoo_sasl.recipe.partitioner.setpartitioner",这是在每次
状态更改时设置的。
-添加一个非阻塞的租约配方。该方法允许在多台机器上调度cron作业,以确保最多有n个实例
将运行一个特定作业,在节点出现故障的情况下,正常切换的租约超时
。
在这种情况下,要获取的多个调用将获得锁,但要释放的第一个调用将移除底层锁。这将使x-1其他acquire语句不受保护(并且不再保持预期的锁)。要解决此问题,有关
锁定配方被重新加入的注释已被删除,尝试时多个获取
现在将被阻止。
-\ 78:Kazoo现在使用socketpairs而不是管道,使其与Windows兼容。
-\ 144,\#221:让client.command使用IPv6地址。
-\ 216:修复了connectionhandler的超时。\ u invoke。
-\ 261:在/下创建顺序znode不起作用。
-\ 274:添加服务器\ u version()重试(默认情况下,将进行4次尝试以更好地处理flakey)响应。
-\ 271:修复了对kazoostate的处理。挂起在setpartitioner中。
-\ 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更改
-空或无数据不再是作为""处理。Raul Gutierrez S.pull req \165,patch
。这将影响您如何处理znode与空字符串中的空数据。
-将acl=[]传递到create()现在可以正常工作,而不是像以前返回的那样使用invalidaclerror。raul gutierrez s在
pr\164.
-删除了对zope.interface的依赖。
接口模块中的类只留作文档使用(问题
131)。
ls已被减少。
-以前记录在"logging.debug"级别的日志现在记录在"kazoo_sal.loggingsupport.blather"级别(5)。
-以前记录在"logging.info"级别的一些低级日志现在记录在"logging.debug"级别。
-问题133:为测试支持引入一个新的环境变量要在不同的范围上运行测试
群集。
建造商)。pr \172,
由raul gutierrez s.修补。
-当使用较新的gevent
时,更改gevent导入以删除弃用警告。pr\191,hiroaki kawai的补丁。
-锁配方未能使用客户的睡眠功能,导致gevent出现
问题。问题150.
-调用一个datawatch或childrenwatch实例两次(decorator)现在会引发异常,因为只有一个函数可以与一个观察程序关联。问题154.
-另一个ATEXIT处理修复程序,以便在处理
连接时删除ATEXIT处理程序。pr_190,由devaev修补
maxim.
-修复kazoo线程处理程序的退出处理,pr_183。通过
brian wickman进行修补。
-分区程序应正确处理挂起的连接,如果以前已分配,则还原已分配的状态。通过
manish tomar.
-问题167:关闭从未启动的客户端会引发类型
错误。joshua harlow的补丁。
-将字典传递给kazooclient。\\uu init\\uu()实际上没有正常工作。Ryan Uber提供的修补程序。
-问题119:处理程序超时采用随机间隔的最大值或
读取超时,以确保读取超时不使用负数。
-修复lock.acquire中异常捕获的顺序。在孩子面前。通过renesac修补。
-修复client.stop()的问题,但不总是将client state设置为
keeperstate.closed。JYRKI Pulliaiinen在PR®174中进行修补。
-问题169:固定管道泄漏到子流程中。
添加维护者/状态
现有配方的信息。
-添加有关替代使用数据监视的说明。
1.3.1(2013-09-25)
----
\#128:修复kazooclient中的未知变量
命令\ u重试参数处理。
-\ 126:修复kazooretry.copy以正确复制睡眠函数。
-\ 118:正确的会话/套接字超时转换(int与float)。
-\文档
-\ 121:添加有关kazoo_sasl.recipe.queue.lockingqueue需要一个
zookeeper 3.4+服务器。
1.3(2013-09-05)
----
Dan Kruchinin的修补程序。
1.2.1(2013-08-01)
---------
watchers和
partitioner正确地从
kazoo_sasl.protocol.states而不是kazoo_sasl.client导入kazoostate。
-issue\109:不能作为数据监视调用正常使用的部分现在可以使用。所有函数都将使用3个参数调用,如果有参数错误,则返回到2个参数。
-issue\106,\ 107:client.create\u async没有从返回的路径中删除更改根。
1.2(2013-07-24)
----
现在可以更可靠地停止Even如果它处于长重试睡眠的
中间。这利用了kazooretry的新中断
功能,它可以将睡眠分成
块,并调用中断函数来确定重试
是否应该提前失败。
-问题62、92、89、101、102:允许kazooretry有一个最大的
截止日期,当连接失败时正确转换,并设置将连接重试行为与客户端命令重试行为分开。Mike Lundy提供的修补程序。
-问题100:使在线程和连接模块中更容易看到异常上下文。
-问题85:增加日志的信息密度,并且不阻止在运行时动态重新配置日志级别。
-相同的数据观察程序节点不再"堆叠"。也就是说,如果对具有相同watch
函数的同一节点发生get和exists调用,则只注册一次。这一变化导致kazoo按照zookeeper客户端规范执行有关重复监视的操作。
在执行更多操作之前,
-kazoo先前会让同一个函数注册为
数据监视或子监视多次,然后在被触发时调用多次。这是不合规的zookeeper client
行为,同一个监视现在只能为每个zookeeper client文档的同一znode路径注册一次。
-问题105:通过将client.py中的模块
导入移到模块作用域来避免罕见的导入锁定问题。
-问题103:允许无前缀的顺序znodes。
-问题98:扩展testing zk harness,使其能够在debian/ubuntu的某些版本上使用不同的文件位置。
-问题97:更新一些docstring,以反映
处理程序的当前状态。
-问题62,\'92,\'89,\#101,\ 102:允许kazooretry有一个最大的
截止日期,在连接失败时正确转换,并设置连接重试行为与客户端命令重试行为分离。Mike Lundy的修补程序。
可选的
函数在实例化期间。附加选项现在隐式地为
,用户可以在选择时忽略事件。有关详细信息,请参阅DataWatch API文档。
-问题99:当写入程序无法关闭时引发更好的异常。
从KazooException继承的WriterNotCloseDexception现在在写入程序无法及时关闭时引发。
1.1(2013-06-08)
————
关闭连接。
-向信号量配方中添加最大租用一致性检查。
-问题76:通过指定新的zookeeper类路径环境变量,扩展测试帮助程序以允许自定义Java类路径。
-问题65:允许无阻塞信号量采集。
\f5;错误处理
-问题96:在测试线束中提供Windows兼容性。
-问题95:处理反序列化连接响应的错误。
-问题94:清除连接管道中的杂散字节。
-问题87/\;88:允许取消后重新获取锁。
-问题77:在初始套接字con中使用超时连接。
-问题69:只在锁和信号量配方中确保路径一次。
-问题68:关闭连接会导致由
监视程序引发异常,这些监视程序假设在运行
命令时连接不会关闭。
-问题66:要求在运行之前ping应答发送另一个ping,
否则,连接将被视为已断开,并引发
connectiondropped以触发重新连接。
-issue \ 63:在丢失连接时未重置观察程序。
-issue \ 58:在
不存在的节点被重置后,数据观察程序无法重新注册更改创建后删除。
-kazooclient.create-async现在支持makepath参数。
-kazooclient.确保"u-path"现在有一个异步版本,
create-async现在支持makepath参数。
-kazooclient.确保"u-path"现在有一个异步版本,
<1.0(2013-03-26)1.0(2013-03-26)
>
如果在第一个节点上发生错误,这将允许其他节点重新获取该项。
混合
gevent/线程设置。
-问题\ 56:避免手表回调计算为false的问题。
1.0b1(2013-02-24)
----
管道来通知zk线程有一个
要发送的新命令,以便zk线程可以发送该命令或检索
响应。在一个
单线程中串行处理zk请求和响应,不需要一堆锁、
可窥视队列和两个在同一底层
套接字上工作的线程。
-issue \-48:为retry helper模块添加了文档。
-issue \-55:修复os.pipe文件描述符泄漏并引入一个
kazooclient.close方法。该方法在测试中特别有用,
在同一进程中创建并关闭多个kazooclient。
使用allow缺少节点时的数据
0.9(2013-01-07)
----
\api更改
-当重试操作最终失败时,它现在引发一个
kazoo sasl.retry.retryfailederror异常,而不是一般的异常实例。retryfailederror也继承了kazooException的基本功能。
确保重新建立与新ZK节点的客户端连接
(如果可用)。
-问题38:在所有套接字上设置cloexec标志(如果可用)。
-问题37/\;40:在选择调用
套接字时处理超时错误。
-问题36:正确设置connectionhandler.writer\u已停止,即使在writer内部引发异常,就像重试操作
失败。
0.8(2012-10-26)
---------
该参数在版本
0.5被删除后不再有效。
错误。
0.7(2012-10-15)
----
\
已创建。
-添加新的队列配方,具有可选的优先级支持。
-添加新的计数器配方。
-添加了Debian打包规则。
延迟成为浮点值以安抚
gevent。
-问题29已修复:datawatch和childrenwatch在服务器断开连接时正确地重新注册其手表。
0.6(2012-09-27)
----
api更改
-节点路径假定为unicode对象。在python 2下,也将接受纯ascii字符串。节点值被视为
字节。字节类型是python 2下str的别名。
-以只读模式连接的zookeeper服务器的new keeperstate.connected\u ro state。
-对当前只读的服务器发出写更改时的new notreadonlycallerror异常。
###特性
-添加对python 3.2的支持,3.3和pypy(仅用于线程
处理程序)。
-连接到ZooKeeper 3.4+只读服务器的处理。
-以只读模式连接到服务器时自动后台扫描读/写服务器。
-添加新的信号量配方。
-添加新的向客户端重试最大延迟参数,默认情况下,将重试延迟限制为最多一小时,而不考虑指数
退避设置。
-向kazooclient添加新的randomize\u hosts参数,允许一个
禁用主机随机化。
可查看队列。
-修复PatientChildrenWatch以使用特定于处理程序的睡眠功能。
<0.5(2012-09-06)
----
跳过版本以反映更改的大小。kazoo现在是一个没有c绑定的纯python客户机。这个版本在pypy和jython等其他python实现上应该不会出现问题。
将来移植到python 3也应该容易得多。
来自纯python重构的方法。
\但是,由于c库中的错误和/或c绑定,不再有完整的python segfault的可能性。
在
离开后将标志设置为false。
公开
zookeeper的四个字母命令,并允许访问结构化的
版本信息。
-添加了"包含数据"选项,用于获取子节点,以包含节点的
stat对象。
-使用调试模式大量增加日志数据。现在可以看到与zookeeper服务器的所有
通信有助于
调试。
kazootestcase和kazootestharness的官方api仍然可以从测试中直接导入。
-删除了kazoo_sasl.handlers.util模块。
-在先前c异常的kazoo异常中,现在提供了向后兼容的异常类别名。名称。
-Unicode字符串现在可以很好地用于节点名称,并且可以正确地从Unicode对象转换到Unicode对象。
-客户端的CREATE和CREATE异步方法的数据值参数设置为可选,默认为空Byte字符串。
数据值必须是字节字符串。Unicode值不再被允许,并将引发一个类型错误。
0.3(2012-08-23)
----
ZC ZooKeeper静态释放,它在密码中正确地保留空字节。
-修复了重新连接锤击,使重新连接遵循重试抖动和重试后退。
-修复了使用线程的可能错误。设置
分区器中的条件。set partitioner使用新的rlock对象处理程序api
为gevent获取适当的rlock。
-问题17修复:用staticmethod包装超时异常,以便可以直接按预期使用它们。Bob van Zant提供的修补程序。
-修复了使用过期会话ID无限期地进行客户端重新连接循环的错误。
0.2(2012-08-12)
----
它使用事件对象。
日志记录现在已设置为使用greenlet
在gevent下记录消息,使用线程one
否则。
-修复了类似于会话侦听器上childrenwatch的14的错误。
-问题14修复:datawatch对其节点的处理不一致正在监视不存在的。datawatch还正确地生成了它的
u get \-u数据函数,以避免阻塞会话事件。
-issue \-15修复了:sequentialgeventhandler的sleep \-func没有在类上适当地设置,导致将附加参数传递给gevent.sleep。
-issue \-9修正:线程/greenlets没有正常关闭。
handler现在有一个start/stop,当调用
start和stop时,客户端使用它来关闭处理程序工作进程。这解决了进程关闭时可能发出的有关工人干净退出的
错误和警告。
-问题12已修复:gevent 0.13没有使用与gevent 1.0相同的
启动新线程,这导致了完全
猴子修补的环境由于错误的线程而停止。更新了
以使用较旧的kazoo方法获取真正的线程模块
对象。
-将setpartitioner使用的重构的childrenwatcher重构为recipe.watchers下的public
exposed patientchildrenwatcher。
先前的
名称暂时被别名化。
旧的ZooKeeper Python绑定中存在无效的状态异常,其中
此问题仍然有效。
-ZooKeeper-1431:安装最新的ZC ZooKeeper静态库或
为Ubuntu12.04或更高版本使用打包的UbuntuOne。
-ZooKeeper-553:不通过此检查状态处理方法,我们使用监视程序以更简单的方式跟踪它,以确保我们知道正确的状态。
以及选举配方的实现。
-数据和儿童观看api。
-st使用监听器注册的ate转换处理来处理
会话状态更改(选择在会话
过期时致命,等)。
-zookeeper日志流重定向到python日志通道
,名称为"zookeeper"。
-基本客户端库,支持线程和gevent
异步环境。
==
![特拉维斯建设](https://travis-ci.org/stephensoriaux/kazoo-sasl.svg?分支=主)
![最新版本](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提供。
authors
----
`kazoo`在[nimbus
项目(http://www.nimbus project.org/)下启动,通过与
的合作,开源社区已经合并。代码来自
[mozilla](http://www.mozilla.org/)和[zope
公司(http://zope.com/)。此后,它聚集了一个活跃的
社区,有50多个贡献者。
<;a name="2.6.0">;<;/a>;
2.6.0(2018-07-24)
功能
**recipe:*添加了SASL摘要MD5支持([533ADBBA](https://github.com/python zk/kazoo/commit/533ADBBAFB41C1BF01FDF3C188C063847B542B))
<;a name="2.5.0">;<;/a>;
《2.5.0(2018-06-01)2.5.0(2018-06-01)
;doc
*正确记录支持的版本([f860de52](https://github.com/python zk/kazoo/commit/f860de5284e8ba7d0ed4171d9e5c5bef41f6b64d))
*向车轮添加许可证([43d156de](https://github.com/python zk/kazoo/commit/43d156de3d41173d7baf6e8edb4efa377b3732fc))
*对contribution.md进行了一些小调整(464)【5837D11B】(https://github.com/python-zk/kazoo/commit/5837D111B11BB51B1296E1B3C1842B18CEB7E743DB7E743D4)
35<<
****食谱:**允许非短暂性锁定([6F7A603D](https://github.com/pythonzk/kazoo/commit/6F7A603DE6f7a6039f7a60141414141414141414141414141414141414B1B1296B1B1B1B1296B1B1B1B118B118C18418B18412br/>家务
*删除python 2.6兼容的gevent([2e8dcd38](https://github.com/python zk/kazoo/commit/2e8dcd3836d01640f07e8de911cdfb3639f97d20))
*删除debian包(468)([a28423aa](https://github.com/python zk/kazoo/commit/a28423aac7f3111388372dec50653a091b9045))
*停止捆绑virtualenv([af9b4cab](https://github.com/python zk/kazoo/commit/af9b4cab39982d961647afca8119816ffe7b5e6))
*从tox中删除python 3.3([cf66474b](https://github.com/python zk/kazoo/commit/cf66474b27b4efc9f65e292434c2fcfb697d34d))
*删除"轻松安装"说明【6E66627D5】(https://github.com/python-zk/kazoo/commit/6E66627D58627D58628D127FC5508F9A11D116E9C317))
\\\\\\\\\\f9A11111111111111111F11D116E9E9E9E9E1111111111f9A11D116E111111111111111111f9A15;
*将wawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawawaa98))
*需要gevent>;=1.2,而不是>;1.1([18f3531b](https://github.com/python zk/kazoo/commit/18f3531b60519a547cfc4d5a4223b4b3f185405))
*删除"async"作为变量的用法([225d3369](https://github.com/python zk/kazoo/commit/225d3369c7a076125a9375951a079f70fbe9e79),关闭[455](https://github.com/python zk/kazoo/issues/455))
***核心:**
*修复gevent 1.3b1+超时导入([257b5896](https://github.com/python zk/kazoo/commit/257b58961f7ddd9db04d6efa0739a1b0404487))
*正确触发多个回调([0905C47B](https://github.com/python zk/kazoo/commit/0905C47FF3CFC42382DAff0D5AC81189C8BA46D))
*在iasyncresult.wait()(487)([4D268ADF](https://github.com/python zk/kazoo/commit/4D268ADF9837836F05DDE5EC81BE0D7BBD759E78)中解析race
**recipe:**正在刷新([11194137](https://github.com/python zk/kazoo/commit/111941371daec00a2ecb5d8c29b9b1d35d6aa4ff))
*意外异常中断树缓存([db0c2d4f](https://github.com/巨蟒ZK/kazoo/commit/db0c2d4f8ab5ecfb367b7b7b2ccfd9c52c2c1c1C91fcd))
\\\\\\\\\\\\\\r;
*在各种处理程序中统一队列工厂(cbd02f5c)(https://github.com/python zk/kazoo/kazoo/commit/cbd02f5ccc6ea9e6dd6b6b101a039a01a039a0397ea649191919143a01a01a039a01a01a039a0397a037a040404040404040404">;<;/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上正常工作。
【88CF4AA7】(https://github.com/python zk/kazoo/commit/88CF4AA7CBCD1437A4436D3AEEC34989C467FCF9D))
****核心:*还原导致运行时错误的设置表(a7b45390】(https://github.com/python zk/kazoo/commit/a7b455390f373A3A33c9a399a3838b45494949494990】(https://a7b45390】(https://a7b4549494990】(https://a7b4539090】(https://github.com/python zk/python zk/python zk/kazob/kazoo/kazo>
*PEP8所有东西([92880342](https://github.com/python zk/kazoo/commit/928803420721b81962e50d425610e62b0c12e438),关闭[445](https://github.com/python zk/kazoo/issues/445))
*删除python 2.6/3.3官方支持,增加3.5/3.6测试([2fab9ff](https://github.com/python zk/kazoo/commit/2fab9ff3bdef51ac6c922bf65b2dcf9c7bd7b)。关闭[441](https://github.com/python zk/kazoo/issues/441))
**core:**
*允许kazooclient hosts arg([72a8d96c](https://github.com/python zk/kazoo/commit/72a8d96ca188c3e93bd0243283539ebd6f1)中的多个终结点,关闭[411](https://github.com/python zk/kazoo/issues/411))
*如果可以支持fds>;1023([267e61b4](https://github.com/python zk/kazoo/commit/267e61b4323bc13505e8933fa9b89d0591af3a69),关闭[171](https://github.com/python zk/kazoo/issues/171))
**配方:**添加treecache配方([ec8b337e](https://github.com/python zk/kazoo/commit/ec8b337e6f1a4ff12e669f4b96ca98fb37ee5d8a))
<;a name="2.3.1">;<;/a>;
2.3.1(2017-06-01)
([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之间合并的更改。
changelog.
*警告:*这是最后一个支持python 2.6的kazoo版本。所有未来的
版本都需要python 2.7及更高版本。
###文档
-修复配方示例,因此它们实际上通过连接
zookeeper来工作。如果没有开始,它们只会挂起来,不会被杀死。
>2.2.1(2015-06-17)
-
错误处理
-基于py3k上的基字符串处理namelerror错误。
相关文档
<2.2(2015-06-15)
-
文件
###功能
-问题234:添加对重新配置群集成员身份操作的支持
-\#315:使用锁配方多次获取kazoo锁在使用acquire时将
阻塞,即使指定了非阻塞(仅当锁已被/已被获取时
)。
-\ 318:在退出寄存器时,采用`*args`和`**kwargs`非args和
kargs
###文档
2.1(2015-05-11)
————
\尚未正式支持zookeeper alpha版本。
-将eventlet*handler*支持集成到kazoo中,以便与
[gevent,线程]处理程序现在可以有一个专用的eventlet
处理程序,用于需要(或希望)使用eventlet的项目(例如在openstack社区工作的项目)。
`Requirements\u eventlet.txt`文件列出了使用此新处理程序时需要满足的可选eventlet
要求。
-使用"six"可以很好地处理kazoo与
python 2.x和3.x的交叉兼容性(减少/消除自定义的
兼容代码,它复制了6个已经提供的内容)。
-将"state_change_event"添加到
"kazoo_sasl.recipe.partitioner.setpartitioner",这是在每次
状态更改时设置的。
-添加一个非阻塞的租约配方。该方法允许在多台机器上调度cron作业,以确保最多有n个实例
将运行一个特定作业,在节点出现故障的情况下,正常切换的租约超时
。
在这种情况下,要获取的多个调用将获得锁,但要释放的第一个调用将移除底层锁。这将使x-1其他acquire语句不受保护(并且不再保持预期的锁)。要解决此问题,有关
锁定配方被重新加入的注释已被删除,尝试时多个获取
现在将被阻止。
-\ 78:Kazoo现在使用socketpairs而不是管道,使其与Windows兼容。
-\ 144,\#221:让client.command使用IPv6地址。
-\ 216:修复了connectionhandler的超时。\ u invoke。
-\ 261:在/下创建顺序znode不起作用。
-\ 274:添加服务器\ u version()重试(默认情况下,将进行4次尝试以更好地处理flakey)响应。
-\ 271:修复了对kazoostate的处理。挂起在setpartitioner中。
-\ 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更改
-空或无数据不再是作为""处理。Raul Gutierrez S.pull req \165,patch
。这将影响您如何处理znode与空字符串中的空数据。
-将acl=[]传递到create()现在可以正常工作,而不是像以前返回的那样使用invalidaclerror。raul gutierrez s在
pr\164.
-删除了对zope.interface的依赖。
接口模块中的类只留作文档使用(问题
131)。
ls已被减少。
-以前记录在"logging.debug"级别的日志现在记录在"kazoo_sal.loggingsupport.blather"级别(5)。
-以前记录在"logging.info"级别的一些低级日志现在记录在"logging.debug"级别。
-问题133:为测试支持引入一个新的环境变量要在不同的范围上运行测试
群集。
建造商)。pr \172,
由raul gutierrez s.修补。
-当使用较新的gevent
时,更改gevent导入以删除弃用警告。pr\191,hiroaki kawai的补丁。
-锁配方未能使用客户的睡眠功能,导致gevent出现
问题。问题150.
-调用一个datawatch或childrenwatch实例两次(decorator)现在会引发异常,因为只有一个函数可以与一个观察程序关联。问题154.
-另一个ATEXIT处理修复程序,以便在处理
连接时删除ATEXIT处理程序。pr_190,由devaev修补
maxim.
-修复kazoo线程处理程序的退出处理,pr_183。通过
brian wickman进行修补。
-分区程序应正确处理挂起的连接,如果以前已分配,则还原已分配的状态。通过
manish tomar.
-问题167:关闭从未启动的客户端会引发类型
错误。joshua harlow的补丁。
-将字典传递给kazooclient。\\uu init\\uu()实际上没有正常工作。Ryan Uber提供的修补程序。
-问题119:处理程序超时采用随机间隔的最大值或
读取超时,以确保读取超时不使用负数。
-修复lock.acquire中异常捕获的顺序。在孩子面前。通过renesac修补。
-修复client.stop()的问题,但不总是将client state设置为
keeperstate.closed。JYRKI Pulliaiinen在PR®174中进行修补。
-问题169:固定管道泄漏到子流程中。
添加维护者/状态
现有配方的信息。
-添加有关替代使用数据监视的说明。
1.3.1(2013-09-25)
----
\#128:修复kazooclient中的未知变量
命令\ u重试参数处理。
-\ 126:修复kazooretry.copy以正确复制睡眠函数。
-\ 118:正确的会话/套接字超时转换(int与float)。
-\文档
-\ 121:添加有关kazoo_sasl.recipe.queue.lockingqueue需要一个
zookeeper 3.4+服务器。
1.3(2013-09-05)
----
Dan Kruchinin的修补程序。
1.2.1(2013-08-01)
---------
watchers和
partitioner正确地从
kazoo_sasl.protocol.states而不是kazoo_sasl.client导入kazoostate。
-issue\109:不能作为数据监视调用正常使用的部分现在可以使用。所有函数都将使用3个参数调用,如果有参数错误,则返回到2个参数。
-issue\106,\ 107:client.create\u async没有从返回的路径中删除更改根。
1.2(2013-07-24)
----
现在可以更可靠地停止Even如果它处于长重试睡眠的
中间。这利用了kazooretry的新中断
功能,它可以将睡眠分成
块,并调用中断函数来确定重试
是否应该提前失败。
-问题62、92、89、101、102:允许kazooretry有一个最大的
截止日期,当连接失败时正确转换,并设置将连接重试行为与客户端命令重试行为分开。Mike Lundy提供的修补程序。
-问题100:使在线程和连接模块中更容易看到异常上下文。
-问题85:增加日志的信息密度,并且不阻止在运行时动态重新配置日志级别。
-相同的数据观察程序节点不再"堆叠"。也就是说,如果对具有相同watch
函数的同一节点发生get和exists调用,则只注册一次。这一变化导致kazoo按照zookeeper客户端规范执行有关重复监视的操作。
在执行更多操作之前,
-kazoo先前会让同一个函数注册为
数据监视或子监视多次,然后在被触发时调用多次。这是不合规的zookeeper client
行为,同一个监视现在只能为每个zookeeper client文档的同一znode路径注册一次。
-问题105:通过将client.py中的模块
导入移到模块作用域来避免罕见的导入锁定问题。
-问题103:允许无前缀的顺序znodes。
-问题98:扩展testing zk harness,使其能够在debian/ubuntu的某些版本上使用不同的文件位置。
-问题97:更新一些docstring,以反映
处理程序的当前状态。
-问题62,\'92,\'89,\#101,\ 102:允许kazooretry有一个最大的
截止日期,在连接失败时正确转换,并设置连接重试行为与客户端命令重试行为分离。Mike Lundy的修补程序。
可选的
函数在实例化期间。附加选项现在隐式地为
,用户可以在选择时忽略事件。有关详细信息,请参阅DataWatch API文档。
-问题99:当写入程序无法关闭时引发更好的异常。
从KazooException继承的WriterNotCloseDexception现在在写入程序无法及时关闭时引发。
1.1(2013-06-08)
————
关闭连接。
-向信号量配方中添加最大租用一致性检查。
-问题76:通过指定新的zookeeper类路径环境变量,扩展测试帮助程序以允许自定义Java类路径。
-问题65:允许无阻塞信号量采集。
\f5;错误处理
-问题96:在测试线束中提供Windows兼容性。
-问题95:处理反序列化连接响应的错误。
-问题94:清除连接管道中的杂散字节。
-问题87/\;88:允许取消后重新获取锁。
-问题77:在初始套接字con中使用超时连接。
-问题69:只在锁和信号量配方中确保路径一次。
-问题68:关闭连接会导致由
监视程序引发异常,这些监视程序假设在运行
命令时连接不会关闭。
-问题66:要求在运行之前ping应答发送另一个ping,
否则,连接将被视为已断开,并引发
connectiondropped以触发重新连接。
-issue \ 63:在丢失连接时未重置观察程序。
-issue \ 58:在
不存在的节点被重置后,数据观察程序无法重新注册更改创建后删除。
-kazooclient.create-async现在支持makepath参数。
-kazooclient.确保"u-path"现在有一个异步版本,
create-async现在支持makepath参数。
-kazooclient.确保"u-path"现在有一个异步版本,
<1.0(2013-03-26)1.0(2013-03-26)
>
如果在第一个节点上发生错误,这将允许其他节点重新获取该项。
混合
gevent/线程设置。
-问题\ 56:避免手表回调计算为false的问题。
1.0b1(2013-02-24)
----
管道来通知zk线程有一个
要发送的新命令,以便zk线程可以发送该命令或检索
响应。在一个
单线程中串行处理zk请求和响应,不需要一堆锁、
可窥视队列和两个在同一底层
套接字上工作的线程。
-issue \-48:为retry helper模块添加了文档。
-issue \-55:修复os.pipe文件描述符泄漏并引入一个
kazooclient.close方法。该方法在测试中特别有用,
在同一进程中创建并关闭多个kazooclient。
使用allow缺少节点时的数据
0.9(2013-01-07)
----
\api更改
-当重试操作最终失败时,它现在引发一个
kazoo sasl.retry.retryfailederror异常,而不是一般的异常实例。retryfailederror也继承了kazooException的基本功能。
确保重新建立与新ZK节点的客户端连接
(如果可用)。
-问题38:在所有套接字上设置cloexec标志(如果可用)。
-问题37/\;40:在选择调用
套接字时处理超时错误。
-问题36:正确设置connectionhandler.writer\u已停止,即使在writer内部引发异常,就像重试操作
失败。
0.8(2012-10-26)
---------
该参数在版本
0.5被删除后不再有效。
错误。
0.7(2012-10-15)
----
\
已创建。
-添加新的队列配方,具有可选的优先级支持。
-添加新的计数器配方。
-添加了Debian打包规则。
延迟成为浮点值以安抚
gevent。
-问题29已修复:datawatch和childrenwatch在服务器断开连接时正确地重新注册其手表。
0.6(2012-09-27)
----
api更改
-节点路径假定为unicode对象。在python 2下,也将接受纯ascii字符串。节点值被视为
字节。字节类型是python 2下str的别名。
-以只读模式连接的zookeeper服务器的new keeperstate.connected\u ro state。
-对当前只读的服务器发出写更改时的new notreadonlycallerror异常。
###特性
-添加对python 3.2的支持,3.3和pypy(仅用于线程
处理程序)。
-连接到ZooKeeper 3.4+只读服务器的处理。
-以只读模式连接到服务器时自动后台扫描读/写服务器。
-添加新的信号量配方。
-添加新的向客户端重试最大延迟参数,默认情况下,将重试延迟限制为最多一小时,而不考虑指数
退避设置。
-向kazooclient添加新的randomize\u hosts参数,允许一个
禁用主机随机化。
可查看队列。
-修复PatientChildrenWatch以使用特定于处理程序的睡眠功能。
<0.5(2012-09-06)
----
跳过版本以反映更改的大小。kazoo现在是一个没有c绑定的纯python客户机。这个版本在pypy和jython等其他python实现上应该不会出现问题。
将来移植到python 3也应该容易得多。
来自纯python重构的方法。
\但是,由于c库中的错误和/或c绑定,不再有完整的python segfault的可能性。
在
离开后将标志设置为false。
公开
zookeeper的四个字母命令,并允许访问结构化的
版本信息。
-添加了"包含数据"选项,用于获取子节点,以包含节点的
stat对象。
-使用调试模式大量增加日志数据。现在可以看到与zookeeper服务器的所有
通信有助于
调试。
kazootestcase和kazootestharness的官方api仍然可以从测试中直接导入。
-删除了kazoo_sasl.handlers.util模块。
-在先前c异常的kazoo异常中,现在提供了向后兼容的异常类别名。名称。
-Unicode字符串现在可以很好地用于节点名称,并且可以正确地从Unicode对象转换到Unicode对象。
-客户端的CREATE和CREATE异步方法的数据值参数设置为可选,默认为空Byte字符串。
数据值必须是字节字符串。Unicode值不再被允许,并将引发一个类型错误。
0.3(2012-08-23)
----
ZC ZooKeeper静态释放,它在密码中正确地保留空字节。
-修复了重新连接锤击,使重新连接遵循重试抖动和重试后退。
-修复了使用线程的可能错误。设置
分区器中的条件。set partitioner使用新的rlock对象处理程序api
为gevent获取适当的rlock。
-问题17修复:用staticmethod包装超时异常,以便可以直接按预期使用它们。Bob van Zant提供的修补程序。
-修复了使用过期会话ID无限期地进行客户端重新连接循环的错误。
0.2(2012-08-12)
----
它使用事件对象。
日志记录现在已设置为使用greenlet
在gevent下记录消息,使用线程one
否则。
-修复了类似于会话侦听器上childrenwatch的14的错误。
-问题14修复:datawatch对其节点的处理不一致正在监视不存在的。datawatch还正确地生成了它的
u get \-u数据函数,以避免阻塞会话事件。
-issue \-15修复了:sequentialgeventhandler的sleep \-func没有在类上适当地设置,导致将附加参数传递给gevent.sleep。
-issue \-9修正:线程/greenlets没有正常关闭。
handler现在有一个start/stop,当调用
start和stop时,客户端使用它来关闭处理程序工作进程。这解决了进程关闭时可能发出的有关工人干净退出的
错误和警告。
-问题12已修复:gevent 0.13没有使用与gevent 1.0相同的
启动新线程,这导致了完全
猴子修补的环境由于错误的线程而停止。更新了
以使用较旧的kazoo方法获取真正的线程模块
对象。
-将setpartitioner使用的重构的childrenwatcher重构为recipe.watchers下的public
exposed patientchildrenwatcher。
先前的
名称暂时被别名化。
旧的ZooKeeper Python绑定中存在无效的状态异常,其中
此问题仍然有效。
-ZooKeeper-1431:安装最新的ZC ZooKeeper静态库或
为Ubuntu12.04或更高版本使用打包的UbuntuOne。
-ZooKeeper-553:不通过此检查状态处理方法,我们使用监视程序以更简单的方式跟踪它,以确保我们知道正确的状态。
以及选举配方的实现。
-数据和儿童观看api。
-st使用监听器注册的ate转换处理来处理
会话状态更改(选择在会话
过期时致命,等)。
-zookeeper日志流重定向到python日志通道
,名称为"zookeeper"。
-基本客户端库,支持线程和gevent
异步环境。