pyzmq上的双向rpc api

pseud的Python项目详细描述


Travis-CI StatusCoverage StatusDocumentation Status

pythonic双向rpc api构建在可插拔mq之上 加密、身份验证和令人心碎的支持。

功能

  1. MQ传输层。
  2. 支持所有本地python类型(msgpack)。
  3. 第一公民例外。
  4. 双向(服务器可以启动对连接的客户端的调用)。
  5. 基于曲线的加密。
  6. 可插拔身份验证。
  7. 可插拔的心跳。
  8. 可插拔远程呼叫路由。
  9. 内置代理支持。服务器可以将工作委托给另一个服务器。
  10. syncclient(使用zmq.req)在非基于事件的进程中使用。 (不支持心跳、身份验证和作业执行 同步客户端。)

安装

$ pip install pseud

执行

服务器

frompseudimportServerserver=Server('service')server.bind('tcp://127.0.0.1:5555')@server.register_rpcdefhello(name):return'Hello {0}'.format(name)awaitserver.start()# this will block forever

客户

frompseudimportClientclient=Client('service',io_loop=loop)client.connect('tcp://127.0.0.1:5555')# Assume we are inside a coroutineasyncwithclient:response=awaitclient.hello('Charly')assertresponse=='Hello Charly'

同步客户端

# to use within a non-asynchronous process or in a command interpreterfrompseudimportSyncClientclient=SyncClient()client.connect('tcp://127.0.0.1:5555')assertclient.hello('Charly')=='Hello Charly'

服务器向客户端发送命令

需要注意的是,服务器需要知道 同级连接到它。 这就是为什么安全插件trusted_peer很方便。 它将注册所有对等ID,并能够将消息路由到每个对等ID。

frompseudimportServerserver=Server('service',security_plugin='trusted_peer')server.bind('tcp://127.0.0.1:5555')@server.register_rpcdefhello(name):return'Hello {0}'.format(name)awaitserver.start()# this will block forever

客户端需要将其标识发送到服务器。这就是为什么plain 使用安全插件。服务器不会检查密码,他只会 要执行路由,请考虑用户id。

frompseudimportClientclient=Client('service',security_plugin='plain',user_id='alice',password='')client.connect('tcp://127.0.0.1:5555')# Action that the client will perform when# requested by the server.@client.register_rpc(name='draw.me.a.sheep')defsheep():return'beeeh'

回到服务器端,我们可以向它发送客户端能够执行的任何命令。

# assume we are inside a coroutinesheep=awaitserver.send_to('alice').draw.me.a.sheep()assertsheep=='beeeh'

文档

Pseud on Readthedocs

版权所有2014 Ezeep GmbH

根据apache许可证2.0版(以下简称“许可证”)授权; 除非符合许可证,否则您不能使用此文件。 您可以在

http://www.apache.org/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则软件 根据许可证分发是按“原样”分发的, 无任何明示或默示的保证或条件。 有关管理权限的特定语言和 许可下的限制。

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

推荐PyPI第三方库


热门话题
java如何为ConcurrentHashMap使用并设置适当的并发级别?   java泛型方法,运行时错误,   java在页面上显示加载的图像   java Paypal定期直接支付问题   java如何延迟重新绘制组件   JavaSpringBoot+Hibernate如何维护@Transient字段   java在其方法中获取关于类的信息   在java中将别名添加到枚举   java如何解决向google报告成绩时“需要重新连接客户端”的问题   清晰的java图像背景   java未找到适合JDateChooser的构造函数(字符串、字符串、字符)   java LRU缓存实现。某些测试用例的代码失败   if语句Java嵌套的if/Else条件   java JSoup“wrap”并非每次都按预期工作   Java Spring引导循环依赖于一个环境   ssl证书无法通过Java和IntelliJ连接到SOAP服务   带整数验证的Java扫描器   java在Flex中呈现具有动态列的datagrid   java Android:通过用户选择的选项将文件上载到服务器   子类中的java抛出错误、异常和运行时异常