我正在寻找 Python 的远程过程调用引擎,我发现PyRo(Python 远程对象)和RPyC(远程 Python 调用)都是我正在寻找的东西。
但是,我很想知道它们之间的比较以及它们的优缺点是什么?
我正在寻找 Python 的远程过程调用引擎,我发现PyRo(Python 远程对象)和RPyC(远程 Python 调用)都是我正在寻找的东西。
但是,我很想知道它们之间的比较以及它们的优缺点是什么?
我个人认为它们大致相同,但 RPyC 的作者(此处)声称更简单(也许对于并非所有习惯于分布式计算的人来说,他有道理;我可能太习惯了,无法做出好的判断;-)。引用他的话……:
虽然 PYRO 的简历中有很长的项目列表,但我觉得设置服务器太复杂了,如果考虑到所需的代码量、注册对象、运行名称服务器等。更不用说不同概念的数量了您必须考虑(事件、重新绑定、有或没有名称服务器、代理与属性代理、名称必须是唯一的等)。而且它是有限的(远程对象必须是可挑选的,因此您不能使用远程文件等)。总而言之,PYRO 的特殊情况太多,而且一般来说太复杂(是的,我认为这很复杂)。因此,我当然不是独立评论者——但请自行判断。RPyC 不是更简单更干净吗?
另一方面,PyRO 确实试图提供一些安全性(RPyC 的作者声称这无论如何都太弱了,并且是 PyRO 声称的许多复杂性的基础)。
更独立的声音 David Mertz 在这里对 RPyC 提供了一个很好的解释(PyRO 的存在时间要长得多,David 指出了以前的文章)。“经典模式”是完全通用且简单且零安全性的部分,“与 Pyro 基本相同(没有 Pyro 的可选安全框架)”;“服务模式”更安全(默认情况下,所有未明确允许的内容都被禁止),并且,David 说,“服务模式本质上是 RPC(例如 XML_RPC),以调用约定和实现的一些细节为模”。对我来说似乎是一个公平的评价。
顺便说一句,我不是特别喜欢单一语言的 RPC 系统——即使 Python 满足了我 99% 的需求(而且还没有那么高;-),我喜欢我可以使用任何语言来完成剩下的 1 %...我不想在 RPC 层放弃它!-) 我宁愿通过这个模块做例如JSON-RPC,或类似...!-)。
YMMV,但这是我评估 RPyC、Pyro4 和 ZeroRPC 以用于即将到来的项目的结果。请注意,没有深入的测试,也不打算进行深入的审查,只是我对每个测试如何满足我即将进行的项目的需求的说明。
零RPC:
火焰兵4:
火焰兵3:
RPyC:
FWIW:
我倾向于喜欢 RPyC(可能是因为它是我的第一个?;-),但它的文档很少。这是我第一次接触 RPC,我花了很长时间才“了解”如何让事情正常工作。作者 (Tomer) 非常乐于助人,并且对 Google RPyC 列表上的 Qs 做出了回应。
如果您是 RPC 新手,我建议您从 Pyro 开始,并利用其可靠的文档来学习其中的技巧。根据您的需要继续使用 RPyC、ZeroRPC 等。