15

Python用のリモートプロシージャコールエンジンを探していますが、PyRo(Pythonリモートオブジェクト)RPyC(リモートPythonコール)の両方が私が探しているものであることがわかりました。

しかし、私はそれらが互いにどのように比較され、それらの長所と短所は何であるかを知りたいです。

4

2 に答える 2

21

個人的にはほぼ同等だと思いますが、RPyCの作者(ここ)はもっと単純だと主張しています(そしておそらく分散コンピューティングに慣れている人にとっては、彼はポイントを持っています;私はそれに慣れすぎて良い判断を下すことができないかもしれません;-)。彼を引用する...:

PYROの履歴書にはかなりのプロジェクトがたくさんありますが、必要なコードの量、オブジェクトの登録、ネームサーバーの実行などを考慮すると、サーバーのセットアップは複雑すぎると思います。さまざまな概念の数は言うまでもありません。考慮する必要があります(イベント、再バインド、名前サーバーの有無、プロキシと属性プロキシ、名前は一意である必要がありますなど)。また、制限があります(リモートファイルなどを操作できないように、リモートオブジェクトは選択可能である必要があります)。全体として、PYROには特殊なケースが多すぎて、一般的に複雑すぎます(はい、これは複雑だと思います)。もちろん、私は独立したレビューアではありませんが、自分で判断してください。RPyCはもっとシンプルでクリーンではありませんか?

コインの反対側では、PyROはある程度のセキュリティを提供しようとします(RPyCの作者はとにかく弱すぎると主張しており、PyROが主張する複雑さの多くの根底にあります)。

より独立した声であるDavidMertzは、ここでRPyCの良い説明を提供します(PyROはずっと長く存在しており、Davidはそれをカバーする以前の記事を指摘しています)。「クラシックモード」は、完全に一般的でシンプルなゼロセキュリティ部分であり、「本質的にPyroと同じです(Pyroのオプションのセキュリティフレームワークなし)」。「サービスモード」はより安全であり(明示的に許可されていないものはすべてデフォルトで禁止されています)、Davidは「サービスモードは基本的にRPC(たとえば、XML_RPC)であり、呼び出し規約と実装に関する詳細を法として」と述べています。私には公正な評価のようです。

ところで、私は単一言語のRPCシステムが特に好きではありません-Pythonが私のニーズの99%をカバーしていても(そしてそれはそれほど高くはありません;-)、残りの1つには任意の言語を使用できるという事実が大好きです%... RPCレイヤーでそれをあきらめたくありません!-)このモジュールなどを介してJSON-RPCなどを実行したいです...!-)。

于 2009-09-11T15:02:58.757 に答える
11

YMMVですが、これが、今後のプロジェクトで使用するためにRPyC、Pyro4、およびZeroRPCを評価した結果です。詳細なテストはなく、詳細なレビューを目的としたものではなく、今後のプロジェクトのニーズに対してそれぞれがどの程度うまく機能するかについてのメモにすぎないことに注意してください。

ZeroRPC:

  • かなりの数の依存関係
  • 非常に若いプロジェクト(dotCloudからの主なサポート)
  • ドキュメントはほとんどありません
  • リモートオブジェクトの属性にアクセスできず、メソッドのみにアクセスできます
  • 属性アクセスがないため、IPythonタブ補完はリモートオブジェクトでは機能しません

Pyro4:

  • Python3のサポート
  • 素敵で豊富なドキュメント
  • 成熟したプロジェクト
  • 属性アクセスなし/IPythonタブ補完

Pyro3:

  • 属性アクセスのサポート(ドキュメントで主張されています;検証されていません)
  • Python3はサポートされていません

RPyC:

  • 属性アクセス、リモートオブジェクトのIPythonタブ補完
  • Python3のサポート(ドキュメントで主張されていますが、まだ検証されていません)
  • むらのあるドキュメント

FWIW:

私はRPyCが好きになる傾向がありますが(おそらくそれが私の最初だったので?;-)、ドキュメントはまばらです。RPCに初めて触れたので、物事を機能させる方法を「理解」するのに長い時間がかかりました。著者(Tomer)は非常に親切で、GoogleRPyCリストのQに回答します。

RPCを初めて使用する場合は、Pyroから始めて、その堅実なドキュメントを利用してロープを学ぶことをお勧めします。必要に応じて、RPyC、ZeroRPCなどに移動します。

于 2012-12-22T00:41:12.937 に答える