7

私は erlang が好きになりました。それは私の問題にぴったりの (咳) アーキテクチャです。その間、私は今でも erlang プロセスと python での非同期メッセージ パッシングをクラッジできると想像したいと思っています (私は現在、この強迫観念を取り除くために治療を受けています)。

最近のどんちゃん騒ぎで 0MQ に出くわし、そのメッセージング機能が気に入っています。これらは erlang/OTP の専門家には自明かもしれませんが、私はただの謙虚な python プログラマーです (私のシュリンクは間違いなくこの巧妙な議論を読むようになるでしょう)。0MQのユーザー ガイドには、仮想の「グリーン」スレッドではなく、ネイティブ OS スレッドを使用すると記載されています。

  1. 0MQ を eventlet/gevent と連携させる方法はありますか?

  2. それとも、緑色の目の怪物を避けて、単一の Python アプリ スレッドに固執し、0MQ のメッセージ キューイングと独自の (熟練した) ネイティブ スレッドの使用によって非ブロック I/O を処理する必要がありますか?

  3. それとも、リハビリを終えてアーランに戻りますか?

4

2 に答える 2

3

私は一種の同じ船に乗っているので、古いスレッドに対応しています。思いを共有しようと思いました。

1: 面倒な作業はすべて完了したようです: https://github.com/traviscline/gevent-zeromqは、gevent ループをノンブロッキング zmq ソケットと統合し、Cpython のスピードアップさえも行いました。また、(この記事の執筆時点では) かなりよく維持されているようです。

2: 状況によります。大量の外部イベント ロジックなしで zmq を使用できるものを作成している場合は、単に zmq を使用する必要があります。OTOH を他のプロトコルと統合する必要がある場合は、gevent を使用することをお勧めします (または、現在は実行可能な zmq がまったくありませんが、ひねった可能性があります)。私のプロジェクトでは通常、複数のプロトコル (つまり、プライベート キュー マネージャー、パブリック http、パブリック https、プライベート memcache など) が必要になるため、現在のお気に入りである twisted よりもプロジェクトのターンアラウンドを短縮するために gevent への切り替えを検討しています。

3: zmq を完全にスキップして、rabbitMQ のような既存の erlang ベースのソリューションと統合したい場合があります。zmq のパフォーマンス上の利点は、あなたが考えるほど重要ではないかもしれません。その場合、既存のライブラリを使用して Python と簡単に統合できる erlang メッセージ キューが得られます。

参照: Second Life wiki でのメッセージ キューの比較

于 2011-04-30T16:01:27.537 に答える
2

Zero MQ が Eventlet で動作するようになりました。

https://lists.secondlife.com/pipermail/eventletdev/2010-October/000907.html

于 2010-10-25T20:51:45.187 に答える