ZooKeeper的异步客户端。

aiozk的Python项目详细描述


Asyncio ZooKeeper客户端

PyPi versionBuild Status

基于wglass/zoonado实现

状态

在客户机/会话/连接中没有主要的bug,但是菜谱只是移植,需要更多的测试。 所以你可以预期,有测试的食谱是有效的。

安装

$ pip install aiozk

快速示例

importasynciofromaiozkimportZKClientasyncdefrun():zk=ZKClient('localhost')awaitzk.start()awaitzk.create('/foo',data=b'bazz',ephemeral=True)awaitzk.set_data('/foo','new bazz')awaitzk.close()loop=asyncio.get_event_loop()loop.run_until_complete(run())

配方

您可以使用类似于zoonado、kazoo和其他libs的食谱:

# assuming zk is aiozk.ZKClientbarrier=zk.recipes.Barrier('/barrier_name')awaitbarrier.create()awaitbarrier.lift()awaitbarrier.wait()

Full list of recipes

了解食谱背后的想法please read thiseven more recipes here。在你自己做一些新的事情之前,一定要熟悉所有的食谱,尤其是当涉及到不止几个动物园管理员的电话时。

测试

nb:请确保您使用的是最新的docker-compose版本。您可以通过运行获得它

pip install --user -U docker-compose

运行测试

# you should have access to docker

docker-compose build
./test-runner.sh

测试方法

大多数测试都是集成测试,并在真实的zookeeper实例上运行。 我们选择了zookeeper 3.5版本,因为它具有动态重新配置的能力,我们将在zk docker集群上执行所有连接/重新连接/监视测试,因为这使我们能够重新启动任何服务器并查看发生了什么。

# first terminal: launch zookeeper cluster
docker-compose rm -fv && docker-compose build zk && docker-compose scale zk=7&& docker-compose up zk_seed zk

# it will launch cluster in this terminal and remain. last lines should be like this:

zk_6       | Servers: 'server.1=172.23.0.9:2888:3888:participant;0.0.0.0:2181\nserver.2=172.23.0.2:2888:3888:participant;0.0.0.0:2181\nserver.3=172.23.0.3:2888:3888:participant;0.0.0.0:2181\nserver.4=172.23.0.4:2888:3888:participant;0.0.0.0:2181\nserver.5=172.23.0.5:2888:3888:participant;0.0.0.0:2181\nserver.6=172.23.0.7:2888:3888:participant;0.0.0.0:2181'
zk_6       | CONFIG: server.1=172.23.0.9:2888:3888:participant;0.0.0.0:2181
zk_6       | server.2=172.23.0.2:2888:3888:participant;0.0.0.0:2181
zk_6       | server.3=172.23.0.3:2888:3888:participant;0.0.0.0:2181
zk_6       | server.4=172.23.0.4:2888:3888:participant;0.0.0.0:2181
zk_6       | server.5=172.23.0.5:2888:3888:participant;0.0.0.0:2181
zk_6       | server.6=172.23.0.7:2888:3888:participant;0.0.0.0:2181
zk_6       | server.7=172.23.0.6:2888:3888:observer;0.0.0.0:2181
zk_6       |
zk_6       |
zk_6       | Reconfiguring...
zk_6       | ethernal loop
zk_7       | Servers: 'server.1=172.23.0.9:2888:3888:participant;0.0.0.0:2181\nserver.2=172.23.0.2:2888:3888:participant;0.0.0.0:2181\nserver.3=172.23.0.3:2888:3888:participant;0.0.0.0:2181\nserver.4=172.23.0.4:2888:3888:participant;0.0.0.0:2181\nserver.5=172.23.0.5:2888:3888:participant;0.0.0.0:2181\nserver.6=172.23.0.7:2888:3888:participant;0.0.0.0:2181\nserver.7=172.23.0.6:2888:3888:participant;0.0.0.0:2181'
zk_7       | CONFIG: server.1=172.23.0.9:2888:3888:participant;0.0.0.0:2181
zk_7       | server.2=172.23.0.2:2888:3888:participant;0.0.0.0:2181
zk_7       | server.3=172.23.0.3:2888:3888:participant;0.0.0.0:2181
zk_7       | server.4=172.23.0.4:2888:3888:participant;0.0.0.0:2181
zk_7       | server.5=172.23.0.5:2888:3888:participant;0.0.0.0:2181
zk_7       | server.6=172.23.0.7:2888:3888:participant;0.0.0.0:2181
zk_7       | server.7=172.23.0.6:2888:3888:participant;0.0.0.0:2181
zk_7       | server.8=172.23.0.8:2888:3888:observer;0.0.0.0:2181
zk_7       |
zk_7       |
zk_7       | Reconfiguring...
zk_7       | ethernal loop

运行测试:

docker-compose run --no-deps aiozk
# last lines will be about testing results

............lot of lines ommited........
.
----------------------------------------------------------------------
Ran 3 tests in 1.059s

OK

配方测试

似乎通常菜谱需要测试几样东西:

  • 配方流按预期工作
  • 超时:用有意义的值重现每个超时(超时0.5s,阻塞0.6s)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java测试访问令牌过滤器   close()上的java Apache POI运行时异常   java为什么Eclipse中的GWT总是显示错误404?   java从socket python服务器接收消息   java mediaRecorder:start()函数失败   不关闭DB连接可能是Tomcat上Java堆溢出的原因吗?   java JFrame无法关闭   java BigQuery加载本地文件不起作用,位置有问题   java可以在递归任务中使用吗?   servlets如何从JSESSIONID加载Java HttpSession?   java将JFileChooser与PDFBox一起使用时,文件不会另存为pdf,但保存时不带扩展名   java将处理结果存储在表中   java算法发现循环世界中重叠间隔的持续时间(24小时)   在windows 10上双击Eclipse安装程序可执行文件(eclipseinstjrewin64.exe)后,java不会发生任何事情   java编译和部署自定义Solr请求处理程序   Java/Android崩溃ApacheCommonsio2。4.jar   spring web应用程序中的java集成收件箱功能   java Grizzly、Jersey和Spring自动布线问题   java如何在pom中添加jar文件依赖项。xml   关于Android中大量GUI更新编码的java概念(GUI处理程序)