問題タブ [pyzmq]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
zeromq - PyZMQ は、新しいクライアント接続ごとにスレッドの作成を処理しますか?
私は PyZMQ を使用して要求/応答サーバーを作成しています。新しいクライアント接続ごとにスレッドを作成する行為が PyZMQ によって自動的に処理されるかどうかを調べようとしています。最終的に、返信に時間がかかる 1 つのクライアントからのリクエストが、他のすべてのクライアントからのリクエストをブロックするかどうかを調べようとしています。
通常、Python ソケット インスタンスで accept を呼び出し、新しい接続が確立されるまでブロックし、別のスレッドで新しい接続を処理します。ただし、PyZMQ ソケットはそのようなワークフローをサポートしていないようです。では、これは PyZMQ でどのように処理されるのでしょうか? PyZMQ REP ソケットに複数のクライアントが接続されている場合、要求を行ったクライアントに応答を正しくルーティングするにはどうすればよいでしょうか? また、クライアントが長時間実行される要求を行ったときに、他のクライアントからの要求がブロックされないようにコードを設計するにはどうすればよいでしょうか?
PyZMQ で提供される Tornado ベースの EventLoop を使用できることはわかっていますが、それがオプションではない場合にどのように機能するかをよりよく理解しようとしています。
python - ZMQ サブキューから特定のメッセージを取得する
ZMQ を使用する Python メッセージング アプリケーションがあります。各オブジェクトには PUB キューと SUB キューがあり、相互に接続されています。特定のケースでは、SUB キュー内の特定のメッセージを待機し、興味のないメッセージは後で処理するために残します。
現在、私はすべてのメッセージを取得し、Python Queue に興味のないメッセージを待ち行列に入れています。待っているメッセージが見つかるまで待ちます。しかし、彼は、各処理ルーティングで、最初に Python Queue で古いメッセージをチェックする必要があることを意味します。より良い方法はありますか?
uuid - 複数のサブスクライバーに同じ ZMQ_IDENTITY
1 つのパブリッシャーに多数のサブスクライバーを持つ zeromq PUB-SUB パターンを構築しています。永続的なサブスクライバーを構築したいので、ZMQ_IDENTITy ソケット オプションについて知りました。
Identity の値を選択する際、何を考慮に入れる必要がありますか? また、すべてのサブスクライバーに対して同じことを行うことはできますか? それらはすべて同じタイプですが、異なるマシン上にあるため、問題になるはずですよね? さらに、説明されているzguideの例のように、UUIDはインプロセスサービスによってのみ生成されますか?
python - ZeroMQ の 2 回目の接続が einval で失敗する
pyzmq
(サーバーから) 2 つのランダムなポートを受信し、それらに接続する C-ZMQ クライアントを取得しました。
通常、すべてが機能していますが、2 番目の接続が errno に設定されて失敗することがありますEINVAL
。(接続呼び出しを切り替えても、2番目はまだ失敗しました)。
ポート番号は問題なく、ZeroMQ である種の競合状態のように見えます。
どうすればこの問題を解決できるか知っている人はいますか?
[編集]:
サーバーはこの構造でポートを送信します " port1:port2
" たとえば " " サーバーと
クライアント1234:1235
のパケットの 16 進ダンプは" "31 32 33 34 3a 31 32 33 35
31 32 33 34 3a 31 32 33 35 01
そして、余分なバイトが2番目の接続に失敗するため...
たぶん、これはzmq バージョン 2.2.0 を使用しているpyzmq
との間のある種の互換性バグです。zmq
memory - Zeromq メモリ リーク (pyzmq)
こんにちは、人工呼吸器/ワーカー/シンク パターンを使用して、ZeroMQ で大きなパケットを送信しようとしています。
ワーカーを追加してみます。そのたびに、シンク プロセスのメモリ使用量が少しずつ増加します。その後、約 6 または 7 個のワーカーで転換点に達し、突然メモリが指数関数的に増加し、次のように終了します。
コードは次のとおりです (ワーカー/シンク パターンのみを表示)。
これは単なるハードウェア リソースの不足ですか? データのバックログ?または、これを回避する方法はありますか?
OSX Mountain Lion を 16 GB メモリで、Python 2.7 を zmq 2.2.0.1 で実行しています。
ありがとう
gevent - アプリがブロックされないようにするために、この例で gevent.sleep(0.1) が必要なのはなぜですか?
この上から髪を伸ばしています。zeromq と gevent を使用した最も単純な例を取得しようとしています。PUB/SUB ソケットを使用するようにこのスクリプトを変更しました。これを実行すると、「サーバー」ソケットが永遠にループします。gevent.sleep(0.1) 行のコメントを外すと、期待どおりに動作し、他の緑色のスレッド (この場合はクライアント) に譲ります。
問題は、スリープ コールを手動で追加する必要があるのはなぜですか? zmq.green バージョンの zmq をインポートすると、送信呼び出しと受信呼び出しがブロックされておらず、その下でタスクの切り替えが行われると思いました。
つまり、この例を機能させるために gevent.sleep() 呼び出しを追加する必要があるのはなぜでしょうか? Jeff Lindsey の元の例では、彼は REQ/REP ソケットを実行しており、スリープ コールを追加する必要はありません... しかし、これを PUB/SUB に変更したとき、処理のためにクライアントに渡すために必要です。
python - libzmq を更新した後の pyzmq のインポート エラー
ZeroMQ を新しいバージョン 3.2 に更新しようとすると、エラーが発生します。これは私が持っている出力です:
何が起こっているのか本当にわかりません。私は Ubuntu 12.04 を使用しており、Python で開発しています。スタック オーバーフローを既に確認しましたが、何も表示されませんでした。以前はうまく機能していましたが、pyzmq 2.2.0.1 をインストールした後にこのエラーが発生し始めました。
誰でもこれで私を助けることができますか?
ありがとうMAXA
zeromq - zeromq送信メッセージブロックを設定するには?
zeromq
ブロックメッセージを送信できる
パラメータを設定する方法,</p>
プロセスが別のプロセスにメッセージを送信するとき,</p>
別のプロセスがメッセージを受信しない場合、メッセージを送信するプロセスはsend
関数でブロックされませんreturn
distributed - ZeroMQ、外部 TCP ソケットに接続するには?
共通のソケットを使用して、異なるサーバーにある 2 つのプログラム間で ZeroMQ メッセージを送信する方法を教えてください。すべてのローカルソケットプログラムで動作しますが、それらがどのようにさまざまな場所に広がるかわかりません。エラーが発生するため:
説明してください。例を挙げるのが難しくなければ。どうも!