基于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与Groovy正则表达式匹配混淆   java控制台未定义为JSNI   主目录中的java指针异常   java如何获取hashmap中的arrayList的大小   ApachePOI用于文本,Java代码中的word doc(.docx)中没有进行追加   Ruby对象到Java对象   JavaSpringJPA哈希集只返回一个值   Java在执行由配置了精确类路径参数的mavenjarpluin生成的可执行jar时无法找到依赖项   java我试图在画布上写一个文本,但什么也没发生   java HTTP 404源服务器找不到目标资源的当前表示形式,或者不愿意透露存在该表示形式。不起作用   java提取小数点后的最后一个数字   oop Java:无法访问对象的元素   PHP URL中RecyclerView中的java句柄空异常   不调用OnCreateViewHolder的java Update RecyclerView适配器项