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