RIAK解析代理客户端

montageclient的Python项目详细描述


========================
用于蒙太奇的python客户端
======================== < BR> 安装/安装 [谚] < BR>
推荐的python 2.7 < BR>
来自montage python client/execute:: < BR>
python setup.py安装 < BR>
要设置蒙太奇本身,请参见github.com/bumptech/montage < BR>
===========
示例
=========== < BR>
必须安装蒙太奇才能运行示例所使用的基本代理。在你的蒙太奇/目录中: < BR>
CD示例&;runhaskell basic_proxy.hs < BR>
有关蒙太奇Haskell设置的更多信息,请参见github.com/bumptech/montage。 < BR>
基本分辨率
=========== < BR>
montage/examples/basic_proxy为三个简单的协议缓冲区定义了解析:userinfo、userevent和username(在montage python client/examples/user.proto中查看它们)。 < BR>
要查看基本的最后一次写入操作的wins分辨率,请在蒙太奇、同一个存储桶和密钥目标处抛出userinfo数据,并查询该存储桶和密钥对: < BR>
来自蒙太奇导入蒙太奇客户端
从用户手掌导入用户信息 < BR>
userinfo是一个具有一个必需整数字段uid的构造函数 < BR>
客户端=MontageClient('localhost',7078) < BR>
存储桶='u-info'
键='1' < BR>
数据1=用户信息(uid=4393)
第一个=client.put(bucket、key、data_1.dumps())
数据2=用户信息(uid=4920)
秒=client.put(bucket、key、data_2.dumps()) < BR>
已解析=client.get(bucket,key)
assert userinfo(resolved.data)=data_2,"上次写入失败" < BR>
get和put的类型签名: < BR>
哈斯克尔风格
其中vclock是可选的,obj有字段"data"、"bucket"、"key"、"vclock" < BR>
put::string->;string->;bytestring->;可能是bytestring->;对象
将bucket key data vclock=obj < BR>
获取::字符串->;字符串->;对象
获取bucket key=obj < BR>
"put"返回存储在RIAK中的数据,RIAK带有一个指定的vclock(obj.vclock)。 < BR>
蒙太奇python客户端使用diesel通过zmq套接字向蒙太奇发送请求。要执行上述代码,请将上述逻辑包装在一个可以快速启动Diesel的函数中: < BR>
来自柴油进口快速启动
来自蒙太奇导入蒙太奇客户端
从用户手掌导入用户信息 < BR>
定义解析():
客户端=MontageClient('localhost',7078)

assert userinfo(resolved.data)=data_2,"上次写入失败" < BR>
快速启动(解决) < BR><删除
=========== < BR>
要删除刚才解析的数据(如上所述): < BR>
来自蒙太奇导入蒙太奇客户端 < BR>
客户端=MontageClient('localhost',7078) < BR>
存储桶='u-info'
键='1'
客户端.删除(bucket,key) < BR> BR/>批次
=========== < BR>
蒙太奇支持批处理命令,即从多个目的地获取数据,或将数据放入多个目的地。PutMany接口需要构建一个新的MontagoObject:: < BR>
来自蒙太奇导入蒙太奇客户端
从用户手掌导入用户信息,用户事件 < BR>
客户端=MontageClient('localhost',7078) < BR>
存储桶='u-info'
键='2'
数据=用户信息(uid=3244)
mo_ui=client.newMontagoObject(bucket,key,data.dumps()) < BR>
bucket='U事件'
键='1'
数据=用户事件(EID=1301)
mo_ue=client.newMontagoObject(bucket,key,data.dumps()) < BR>
what_put=客户端。多放([mo_ui,mo_ue]) < BR>
同样,如果您希望从多个目的地获取信息,您可以将请求排序为列表中的(bucket,key)对: < BR>
found=client.get_many([('u-info','2'),('u-event','1')) < BR>
找到断言[0].data==mou ui.data < BR>找到断言[1].data==mou ue.data < BR>
found=client.get_many([('u-info','2'),('u-whatever','1')) < BR>
找到断言[1]==无 < BR>
响应是一个与请求长度相同的列表:将(bucket,key)对完全替换为找到的值或无值。 < BR>
引用获取
=========== < BR>
引用get请求是两个链式get请求,其中第一个查找生成一个值,该值用作第二个查找的键。 < BR>
如果我们定义了一种将数据类型转换为bytestring密钥的方法(就像我们在basic_proxy中对userinfo所做的那样),那么我们首先存储可以链接的数据: < BR>
"基本"代理定义从用户信息的uid->;键的转换 < BR>
来自蒙太奇导入蒙太奇客户端
从用户手掌导入用户信息,用户事件 < BR>
客户端=MontageClient('localhost',7078) < BR>
refdata=userinfo(uid=2)目标的键
引用=cl.put('u-info',str(1),refdata.dumps()) < BR>
target1data=userevent(eid=3)
target1=client.put('u-event',str(2),target1data.dumps()) < BR>
target2data=用户名(name="montage")
target2=client.put('u-name',str(2),target2data.dumps()) < BR>
然后发出reference get请求: < BR>
(referenceFound,valuesFound)=客户端。按"u-info",str(1),["u-event","u-name"]获取 < BR>
断言userinfo(referencefund.data)=引用
断言长度(valuesfound)==2
断言(valuesfound[0]不是none)和(valuesfound[1]不是none)
断言用户事件(valuesfound[0].data==target1data
断言用户名(valuesfound[1].data==target2data < BR>
将对reference get请求返回的值进行排序,以匹配给定的存储桶。如果reference get未能返回其中一个值,则它将在valuesfound列表中为none。 < BR>
还有一个client.get_by方法,它只在不关心中间(referencefund)查找对象的情况下返回valuesfound。不过,如果需要对referencefound有条件地执行另一个查找,则此对象可能很有用。

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

推荐PyPI第三方库


热门话题
java Spring框架服务单元测试   在Java中遍历hashmaps的hashmap以检索字符串值   如何使用CodeQL检查Java注释是否具有特定属性?   java为什么在Spring Boot中访问此资源而不是登录弹出窗口需要始终获得完全身份验证   处理将多集计数转换为列表的过程   java另一个线性布局,没有出现按钮   eclipse Java映像加载未显示在jar中   java Junit类无法加载基本测试类ApplicationContext   java如何在main中使用my getvalues()方法打印列表   java Sonar,S128:切换案例应该以无条件的“中断”语句结束,而不是继续   java从socket读取字符串错误连接重置错误   java使用新数据刷新任意图表饼图   java通过异步运行lambda访问方法参数   java错误的结果一旦我处理try and catch