基于rabbitmq/amqp的rpc客户机/服务器库

rabbitrpc的Python项目详细描述


Author:Nick Whalen <nickw@mindstorm-networks.net>

rabbitrpc是一个基于amqp的python框架的rpc。它允许用户减少对远程方法的担心 打电话和更多关于她/他实际代码的信息。它是为搔痒而写的,瘙痒是在 更大的软件项目需要一个高度可扩展的内部api。

从0.6.0开始,rabbitrpc能够完全模拟远程函数及其模块。这意味着使用 框架非常简单,只需实例化rpcclient类并调用“start()”(在编写并注册之后 当然,还有一些服务器端组件)。请参见下面的一个示例,了解其工作原理。

rabbitrpc试图让事情保持尽可能自然的感觉。如上所述,导入和函数调用模块 就像你用它们来编写本地代码一样。rpc客户端还将返回从 服务器端功能(在可pickle限制内)。如果远程代码中出现异常,则 将引发异常并显示其回溯。

请记住,这个包裹还在制作中。以下是1.0.0之前计划的当前列表:

  • 添加对远程类注册和有状态类管理的支持,这些支持是基于每个客户端从服务器内部进行的。
  • 身份验证
  • 授权(以及创建组/角色的能力,指定哪些函数/方法/类可能由或不由特定帐户运行。
  • AMQP后端中的死信支持(对于出现问题并需要恢复的少数情况)。
  • rpc端点的“版本控制”,这将允许服务器为api的子集/端点集服务

真正的文件是在计划,我的时间只是有限的目前。所有来源都有详细的记录 医生。请暂时检查一下。

错误和功能请求:

请将它们放在项目的github跟踪器上:https://github.com/nwhalen/rabbitrpc/issues

示例

有关实际的工作代码示例,请参阅源代码树中的“examples”目录。您需要RabbitMQ服务器集 在你运行他们之前。但你知道。

rpc端点

from rabbitrpc.server import register

@register.RPCFunction
def the_price_is_wrong():
    print '-- Bob Barker'

rpc服务器

import <your endpoint modules here>
from config import RABBITCONF

server = rpcserver.RPCServer(RABBITCONF)

try:
    server.run()
except KeyboardInterrupt:
    server.stop()

rpc客户端

from config import RABBITCONF

# Fire up the client
client = rpcclient.RPCClient(RABBITCONF)
client.start()

# This module is dynamically created by the client, along with it's function 'all_the_things'.  Calling
# 'all_the_things' will cause the client to transparently proxy the call out to the RPC server, via RabbitMQ.
import rpcendpoints
result = rpcendpoints.the_price_is_wrong()

print 'result: %s' % result

许可证

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

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

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

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

推荐PyPI第三方库


热门话题
java集合属性值   java字符串==运算符是否比较引用?   java是否存在过太多的ListView或适配器?   json获取java中类路径中下载的文件   我可以用java代码解决数据库并发问题吗?   在多个线程中使用forEach()或使用forEach()和lambdas进行java集合迭代   java输出JFrame中的整个循环   java禁用高度详细的日志记录   java在没有特定属性的对象中访问模型的值   java Smack xmpp建立连接   处理过时域对象引起的并发问题的java策略(Grails/GORM/Hibernate)   java从ObservableList中提取元素   使用图像进行java相似图像搜索   java ListView和图像:我快疯了   在Java中,如何从毫秒时间戳中提取一天的周期?   java我需要这样的设计,但我面临两个问题   java如何获取JGoodies FormLayout中的单元格大小   Spring引导生成的java War文件未部署到Weblogic 12c