14

私がやりたいことは、ソケットを介していくつかの RPC 呼び出しを行うことだけです。jython 2.5を実行するバックエンド処理を行うサーバーがあります。CPython で Django を実行しているフロントエンド サーバーからいくつかの呼び出しを行う必要があります。私は壁に頭をぶつけて、あらゆる形のIPCを進めてきました。

私が試したことのリスト:

  • Apache Thriftには実際のリリースはなく、スナップショットのみです。安定したものを使いたい。
  • JSON-RPCは興味深いものであり、ソケット上で実行できるはずですが、実際にはほとんどの実装は HTTP 上でしか機能しないようです。HTTP オーバーヘッドはまさに私が避けようとしているものです。
  • Protocol Buffersは、実際にはシリアライゼーション プロトコルにすぎません。私が収集したものから、protobuf は RPC のインターフェイス生成を提供しますが、それは単なるインターフェイスです。実際にすべての接続コードを作成するのはユーザー次第です。ソケットの使用に行き詰まる場合は、シリアル化に JSON を使用します。よりシンプルで高速です。
  • Pyroは Jython をサーバーとして使用すると正しく動作しません。ある種のソケット タイムアウトの問題。メーリングリストにメッセージを送信しました。
  • pysageメッセージ パッシングに感謝します。Python 2.6 または処理モジュール (コンパイルされた拡張機能を含む) のみが必要です。Jython はバージョン 2.5 であり、コンパイルされた拡張機能は使用できません。
  • Candygramは pysage の興味深い代替手段ですが、私が知る限り、メンテナンスされていません。私はJythonで試したことさえありません。経験はありますか?
  • Twisted パースペクティブ ブローカーTwisted は Jython では動作しません。

XML-RPC でこれを行うのは簡単なことだとわかっているので、さらに気難しくなります。HTTP のオーバーヘッドを回避したいのですが、同時に、独自のプロトコルを実装するためにソケットを汚したくはありません。もしそうなら、私はそれを間違ってやるでしょう。

何か案は?おそらく 20 分ほど泣いてから、XML-RPC を使用するだけです。

4

5 に答える 5

6

Hessianを考慮しましたか? 宣伝文句から:

Hessian Binary Web サービス プロトコルを使用すると、大規模なフレームワークを必要とせず、プロトコルのアルファベットのスープをさらに学習しなくても、Web サービスを使用できるようになります。これはバイナリ プロトコルであるため、添付ファイルを使用してプロトコルを拡張する必要なく、バイナリ データを送信するのに適しています。

Python クライアントと Java サーバー (およびその他) があります。

更新: HTTP に反対している場合は、 and だけを使用SocketServerしてみませんpickleか? プロトコルはあまり必要なく、間違えにくい。長さの接頭辞が付いたピクル文字列を送受信します。

于 2009-07-22T08:00:13.550 に答える
5

ソケットを使用するのはどうasyncoreですかasynchat

いくつかのリンク:

于 2009-07-22T08:56:45.243 に答える
2

私にとって最も興味深いと思われる2つ:

  • GearmanPythonのバインディング。C(元々はperl)で書き直されたので、かなり高速になりました。これは本番環境で使用されます(ただし、本番環境で使用されているPythonバインディングの例を示すことはできません)。MySQLとPostgresqlへの(私にとって)非常に興味深いインターフェースがあります。最後に、今日はDjangoのJacobKaplan-Mossからのツイートです。

  • RabbitMQは単なるメッセージキューであるため、セロリも使用しない限り、独自のメッセージをシリアル化する必要があります。

于 2009-07-22T09:57:04.093 に答える
0

CORBA の使用について考えたことはありますか? 高速で、ポータブルで、オブジェクト指向です...

私は Java 側でしか使用していません (Jython から問題なく純粋な Java ブローカーを使用できると思います)。IIOP を使用すると、CPython クライアントと相互運用できるはずです。

于 2009-07-22T08:27:26.413 に答える