etcd的python客户端

romana-python-etcd的Python项目详细描述


注:这是https://github.com/jplana/python-etcd的克隆,这样我们就可以使用watch timeout而不产生错误消息。


===


etcd的python客户端https://github.com/coreos/etcd


官方文档:http://python etcd.readthedocs.org/

图片:https://travis-ci.org/jplana/python-etcd.png?branch=master
:目标:https://travis ci.org/jplana/python etcd

…图片::https://coveralls.io/repos/jplana/python-etcd/badge.svg?branch=master&service=github
:目标:https://coveralls.io/github/jplana/python-etcd?branch=master

installation
----


pre requirements
~~~~~~~~~~~~~~~~~~~

>此版本的python etcd只能与etcd服务器版本2.0.x或更高版本一起正常工作。如果您运行的是较旧版本的etcd,请使用python etcd 0.3.3或更早版本。

它没有经过测试,也不希望在更过时的python版本中工作。

>;源代码
~~~~~~~~~~~~

……代码::bash

$python setup.py install

>;来自pypi
~代码::bash

$python3.5-m pip install python etcd


usage
----


客户端的基本方法与以前的版本相比有所改变,以反映新的api结构;但是,已经维护了兼容层,因此您不必重写所有现有代码。

代码::python


client=etcd.client(port=4002)
client=etcd.client(host='127.0.0.1',端口=4003)
client=etcd.client(主机=('127.0.0.1',4001)、('127.0.0.1',4002)、('127.0.0.1',4003))
client=etcd.client(主机='127.0.0.1',端口=4003,允许重定向=false)不允许在非主机上运行敏感命令,默认值为true
指向客户机的srv记录版本前缀='/etcd')


编写密钥
~~~~~~~~~~~~~~

…代码::python

client.write('/nodes/n1',1)
代码::python

client.read('/nodes/n2').value
client.read('/nodes',recursive=true)获取目录的所有值,递归地。
client.get('/nodes/n2').value


~~~~~~~~~~~~~~~~~

…代码::python

client.delete('/nodes/n1')


atomic compare and swap
~~~~~~~~~~~~~~~~~~~~~~~~~

……代码::python

client.write('/nodes/n2',2,prevvalue=4)将/nodes/n2的值设置为2,前提是其前一个值为4并且
client.write('/nodes/n2',2,prevexist=false)仅当键在
client之前不存在时,将/nodes/n2的值设置为2。write('/nodes/n2',2,preveindex=30)仅当上次在索引30处修改键时,将/nodes/n2的值设置为2。4)等同于客户端。写入('/nodes/n2',2,prevValue=4)


代码:PYThon

result=client.read('/foo')
print(result.value)bar
result.value+=u'bar'
updated=client.update(result)如果任何其他客户端在此期间写入了'/foo',则此操作将失败
print(updated.value)barba


~~~~~~~~~~~~~~~

…代码::python

client.read('/nodes/n1',wait=true)将等待密钥更改,更改后返回
client.read('/nodes/n1',wait=true,timeout=30)将等待密钥更改,更改后返回,或在30秒后异常退出。
client.read('/nodes/n1',wait=true,wait index=10)从索引10开始获取对此密钥的所有更改
client.watch('/nodes/n1')等效于client.read('/nodes/n1',wait=true)
client.watch('/nodes/n1',index=10)

正在刷新。

…代码::python

client.write('/nodes/n1','value',ttl=30)将ttl设置为30秒
client.refresh('/nodes/n1',ttl=600)将ttl刷新为600秒,而不通知当前的观察者

代码::python

初始化锁对象:
=etcd.lock(客户机,"我的锁"名称)

#将一直锁定,直到获取锁为止对象也可以用作上下文管理器:
client=etcd.client()
with etcd.lock(client,"customer1")作为我的锁:
执行操作()
我的锁被获取为true
我的锁被获取(lock我的锁被获取为false



代码::python

client.machines

get leader of the cluster
~代码::python

client.leader

代码::python

x=client.write("/dir/name","value",append=true)
print("生成的密钥:"+x.key)
print("存储的值:"+x.value)


>列出目录的内容
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

代码::python

directory.children:
print(result.key+":"+result.value)


代码::bash

$python bootstrap.py
$bin/buildout


代码::bash

$bin/test

代码::bash

$cd docs
$make


release howto
----


to make a release


1)更新news.txt和setup.py中的发布日期/版本setup.py sdist'
3)在dist/
4)upload to pypi:'python setup.py sdist register upload'




news
====
0.4.5
----
*发布日期:2017年3月3日*

*删除dnspython2/3要求
*更改属性名称setter在lock中
*修复了acl测试
*向客户端添加了版本/群集版本属性
*在用作上下文管理器时在lock中修复了
*修复了urllib3异常的不正确使用
*在lock中对错误类的小修复
*返回modifidindex以监视在lock修复上下文中的更改
*管理器异常处理
*对文档的改进
*仅在从群集刷新后删除基本uri
*避免对计算机缓存进行双重更新



>0.4.4
----
*发布日期:2017年1月10日*

*修复一些测试
*使用sys,version\u信息元组,而不是命名元组
*改善&;修复文档
*修复python3在内容锁上阻塞时的特定问题
*添加刷新密钥方法
*添加自定义锁前缀支持



0.4.3
----
*发布日期:2015年12月14日*

*修复连接错误时的参数检查
*python 3.5兼容性和一般python3清理
*添加了用于管理acl的身份验证和模块
*添加了基于srv记录的dns发现
*修复了(再次)群集id更改的日志记录
*修复了leader查找
*在出现异常时正确重试请求
*客户端:清理打开的连接删除

0.4.2
----
*发布日期:2015年10月8日*

*固定锁文档
*ETCD 2.2更改导致的固定锁序列
*响应处理期间更好的异常管理
*群集ID更改的固定日志
*固定子树结果
*执行如果etcd响应不包含id,则不检查群集id
*为etcdconnectionfailed添加了原因



<0.4.1
----
*发布日期:2015年8月1日*

*添加了客户端领导人选举
*添加了统计端点
*添加了日志记录
*更好的异常处理
*检查每个请求上的群集ID
*添加了etcd.client.members和修复了etcd.client.leader
*删除了锁定和选择etcd支持
*允许使用etcd代理进行重新连接
*实现pop:remove key from etc并返回相应的值。
*永恒守望者现在可以递归
*修复etcd。客户端计算机
*不向etcd发送值为"none"的参数
*在写入时支持ttl=0。
*将pyopenssl移动到测试要求中。
*始终设置证书信息,以便从http重定向到https工作。



0.3.3
----
*发布日期:2015年4月12日*

*forward leaves_only value in get_subtree()递归调用
*fix readme prevexists->;prevexist
*添加了可配置的版本前缀
*添加了对递归监视的支持
*更好的错误处理支持(更详细的异常)
*修复了一些不可靠的测试



0.3.2
----

*发布日期:2014年8月4日*

*修复了生成的文档版本。



0.3.1
----


*发布日期:2014年8月4日*

*增加了consisten read选项
*在read()中增加了固定超时参数
*增加了原子删除参数支持
*固定删除行为
*增加了允许结果原子更新的更新方法
*修正了对write()的检查
*将leaves generator添加到etcdresult并获取用于递归获取的子树
*将etcd_index添加到etcdresult
*已更改etranal->;永恒
*已更新urllib3&;pyopenssl库
*几个性能修复
*更好地解析etcd_索引和raft_索引
*删除了重复的测试
*添加了几个集成和单元测试
*在travis中使用etcd v0.3.0
*使用"python setup.py test"执行测试鼻



0.3.0
----


*发布日期:2014年1月18日*

*API v2支持
*python 3.3兼容性


>0.2.1
----


*发布数据:2013年11月30日*


*SSL支持
*结果中增加了对子目录的支持。
*改进测试
*增加了对重新连接的支持,允许死亡节点容忍。



>0.2.0
----


*发布日期:2013年9月30日*


*允许获取多个密钥(子节点)



<0.1
--

*发布日期:2013年9月18日*

*初始发布




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

推荐PyPI第三方库


热门话题
java Spring MVC 4.0 RequestMapping无值,基于methodname   java Samsung 10 plus不允许wifi p2p发现   春爪哇。伊奥。IOException:找不到文件   java JasperReport饼图示例   java我试图使用mockito注释来测试我的代码,但无法解决mockito异常   命令行界面Java:制作简单的交互式cli应用程序   java jdk1之间的区别是什么。7_9 9和jdk1。7_271   java重载一个被重写的、继承的方法   java LazyInitializationException春季启动   java Play Framework 2.2.1 3个表之间存在大量关系