PyRo和RPyC python库的优点和缺点是什么?

时间:2009-09-11 11:20:12

标签: python distributed pyro rpyc

我正在寻找Python的远程过程调用引擎,我发现PyRo (Python Remote Object)RPyC (Remote Python Call) 都是我要搜索的东西。

然而,我很想知道他们如何相互比较以及他们的利弊是什么?

2 个答案:

答案 0 :(得分:18)

我个人发现它们大致相当,但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模块,等等......! - )。

答案 1 :(得分:10)

YMMV,但这是我评估RPyC,Pyro4和ZeroRPC用于即将推出的项目的结果。请注意,没有深入的测试,这也不是一个深入的评论,只是关于每个项目如何适应我即将开展的项目需求的笔记。

ZeroRPC:

  • 相当多的依赖
  • 非常年轻的项目(来自dotCloud的主要支持)
  • 非常少的文档
  • 无法访问远程对象的属性,只能访问方法
  • 由于缺少属性访问,IPython选项卡完成不适用于远程对象

Pyro4:

  • Python3支持
  • 很好,丰富的文档
  • 成熟项目
  • 没有属性访问/ IPython选项卡完成

Pyro3:

  • 支持属性访问(在文档中声明;尚未验证)
  • 没有Python3支持

RPyC:

  • 属性访问,远程对象上的IPython选项卡完成
  • Python3支持(在文档中声明;尚未验证)
  • 参差不齐的文档

FWIW:

我倾向于喜欢RPyC(也许是因为它是我的第一个?;-),但它的文档很少。这是我第一次接触到RPC,我花了很长时间才“弄清楚”如何让事情发生。作者(Tomer)非常有帮助,并且会对Google RPyC列表中的Q进行回复。

如果您是RPC的新手,我建议您从Pyro开始,并利用其可靠的文档来学习绳索。根据需要转到RPyC,ZeroRPC等。