PyRo 和 RPyC python 库的优缺点是啥?
Posted
技术标签:
【中文标题】PyRo 和 RPyC python 库的优缺点是啥?【英文标题】:What are the pros and cons of PyRo and RPyC python libs?PyRo 和 RPyC python 库的优缺点是什么? 【发布时间】:2009-09-11 11:20:11 【问题描述】:我正在寻找 Python 的远程过程调用引擎,我发现 PyRo (Python Remote Object) 和 RPyC (Remote Python Call) 都是我正在寻找的东西。
但是,我很想知道它们之间的比较以及它们的优缺点是什么?
【问题讨论】:
我不知道关于利弊的问题对 SO 有效。我并不反对,只是感到惊讶。 【参考方案1】:我个人认为它们大致相同,但是 RPyC 的作者 (here) 声称更简单(也许对于那些不习惯分布式计算的人来说,他有道理;我可能太习惯了,无法做出好的判断;-)。引用他的话……:
虽然 PYRO 有很长的列表 简历中有相当多的项目,我 也找到设置服务器 复杂,如果你考虑到 需要的代码量,注册 对象、正在运行的名称服务器等。 更不用说不同的数量 你必须考虑的概念(事件, 重新绑定,有名或无名 服务器,代理与属性代理, 名称必须是唯一的,等等)。和 它是有限的(远程对象必须是 可腌制,因此您无法使用 远程文件等)。总而言之,PYRO 有太多特殊情况并且是 一般太复杂(是的,我 认为这很复杂)。所以 当然,我不是独立评论者 ——但要自己判断。 RPyC 不是更简单更干净吗?
另一方面,PyRO 确实试图提供一些安全性(RPyC 的作者声称这太弱了,并且是 PyRO 声称的许多复杂性的基础)。
更独立的声音 David Mertz 为here 提供了对 RPyC 的一个很好的解释(PyRO 的存在时间要长得多,David 指出了之前的文章)。 “经典模式”是完全通用且简单且零安全性的部分,“与 Pyro 基本相同(没有 Pyro 的可选安全框架)”; “服务模式”更安全(默认情况下,所有未明确允许的内容都被禁止),并且,David 说,“服务模式本质上是 RPC(例如 XML_RPC),以调用约定和实现的一些细节为模”。对我来说似乎是一个公平的评估。
顺便说一句,我不是特别喜欢单一语言的 RPC 系统——即使 Python 满足了我 99% 的需求(而且还没有那么高;-),我喜欢我可以使用任何语言来实现剩下的 1%...我不想在 RPC 层放弃它!-) 我宁愿做例如JSON-RPC 通过this 模块,或类似...!-)。
【讨论】:
回复。最后一段:Pyro 最近获得了原生 Java 和 C# 实现,因此它不是“仅限 python”。它被称为 Pyrolite:irmen.home.xs4all.nl/pyrolite【参考方案2】:YMMV,但这是我评估 RPyC、Pyro4 和 ZeroRPC 以用于即将到来的项目的结果。请注意,这里没有深入的测试,也不是要进行深入的审查,只是我对每个测试如何满足我即将进行的项目的需求的说明。
ZeroRPC:
相当多的依赖项 非常年轻的项目(dotCloud 主要支持) 文档很少 无法访问远程对象的属性,只能访问方法 由于缺少属性访问,IPython 选项卡补全不适用于远程对象火焰兵4:
Python3 支持 精美、丰富的文档 成熟项目 无属性访问/IPython 选项卡完成火焰兵3:
支持属性访问(在文档中声明;尚未验证) 不支持 Python3RPyC:
属性访问,远程对象上的 IPython 选项卡完成 Python3 支持(文档中声称;尚未验证) 文档参差不齐FWIW:
我倾向于喜欢 RPyC(可能是因为它是我的第一个?;-),但它的文档很少。这是我第一次接触 RPC,我花了很长时间才“了解”如何让事情正常工作。作者 (Tomer) 非常乐于助人,并且确实回复了 Google RPyC 列表中的 Qs。
如果您是 RPC 新手,我建议您从 Pyro 开始,并利用其可靠的文档来学习其中的技巧。根据需要继续使用 RPyC、ZeroRPC 等。
【讨论】:
我最近开始了一个名为 Pizco 的小项目,它通过 ZMQ 进行 RPC。它不需要修改所服务的应用程序并有助于连接到 Qt 信号。它还很年轻,但你可以看看pizco.readthedocs.org/en/latest 谢谢 Hernan,我去看看! 请注意,Pyro4 很久以前就学会了在代理对象上执行 IPython/bpython/etc.. 制表符补全(自 2014 年开始工作)。属性访问也一样。以上是关于PyRo 和 RPyC python 库的优缺点是啥?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Pyro-nsd 时找不到 Pyro Nameserver
python专属的Remote Produce Call框架:rpyc