問題タブ [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.

0 投票する
1 に答える
2235 参照

python - 別のスレッドからぶら下がっている zmq ソケットを閉じる

使用中の可能性のある他のソケットを壊すことなく、Python の別のスレッドから特定のぶら下がっている recv zmq ソケットを閉じる方法はありますか? 次のコードは終了していないようです。をに置き換えるsock.close()ctx.destroy()終了しますが、コンテキスト内のすべてのソケットが明らかに破棄されます。

0 投票する
1 に答える
1882 参照

python - tornado と zmq ioloops の組み合わせ: ピア例外による接続のリセット

pyzmq 公式ドキュメントで説明されているように、Tornado と pyzmq ioloops を組み合わせようとしたときに、1 つの厄介な (重大ではありませんが) 問題に直面しました。

クライアント (C) からの REST API リクエストを受け入れ、実際の作業を行う別のプロセス (Z) に ZMQ トランスポートを介してそれらをプロキシするトルネード (T) サーバーを実行しているプロセスがあります。

Z が T に応答する前にC が接続を閉じると、Z (トルネード) は大量の例外トレースを出力します (下部を参照)。次の例を想像してください。

この例は、実際には ZMQ ピアと通信するのではなく、pyzmq ioloop を tornado の ioloop にアタッチするだけです。ただし、問題を説明するには十分です。

コンソール 1 実行サーバーから:

コンソール 2 からクライアントを実行し、サーバーが応答する前に (つまり 5 秒間) 中断します。

サーバーの出力は次のとおりです。

注: pyzmq ioloopを除外すると消えるため、pyzmq関連の問題のようです。

サーバーは停止せず、他のクライアントが使用できるため、問題は重大ではありません。ただし、ログファイルでこれらの巨大な紛らわしいトレースを見つけるのは非常に面倒です。

では、この問題を解決するためのよく知られた方法はありますか? ありがとう。

0 投票する
2 に答える
8124 参照

zeromq - ZMQ REP、リクエストの送信者を知る

現在、Python で zmq を使用しています。サーバーは REP ソケットを使用しています。

メッセージを受信したときに、送信者を知る方法はありますか? が 2 つのメッセージを受信した場合、それらが同じユーザーからのものかどうかを知る必要があるだけなので、たとえば uid で十分です。

0 投票する
2 に答える
3730 参照

python - pyzmqノンブロッキングソケット

Pythonバインディングを使用したREQ/REPノンブロッキングZeroMQ(0MQ)の例を誰かに教えてもらえますか?おそらく、ZMQについての私の理解は間違っていますが、オンラインで例を見つけることができませんでした。

Node.JSに、複数のクライアントからサーバーに作業を送信するサーバーがあります。サーバーは、あるクライアントのデータを処理してから次のクライアントのデータを処理する代わりに、並行して動作する一連のジョブを起動できるという考え方です。

0 投票する
1 に答える
268 参照

python - ZeroMQrrclient-ブローカーが機能しない

client-broker-workerアーキテクチャ(rrclient、rrworker、rrbroker)に対して、https://github.com/imatix/zguideからPythonとNode.JSの例を実行しようとしています。

Pythonの実装が正常に機能し、Node.JSの実装が正常に機能することを確認できますが、Node.JSrrclientをPythonrrbrokerと組み合わせようとすると、すべてがクラッシュし、次のエラーが発生します。

libzmq.3.dylibプラグインを使用しているときに、Pythonが予期せず終了しました。

また、ブローカーには次のエラーがあります。アサーションに失敗しました:(prefetched_msg.flags()&msg_t :: Identity)== 0(router.cpp:276)トラップを中止します:6

Node.JSにPythonへの接続に問題があるようです。これは、client-broker-workerだけでなく、基本的なREQ/REPアーキテクチャも考え出すようです。

0 投票する
1 に答える
24954 参照

zeromq - ZeroMQ/ZMQプッシュ/プルパターンの有用性

ZeroMQ Push/Pull(彼らが呼んでいる)ソケットタイプを実験してみると、Pipelineこのパターンの有用性を理解するのに苦労しています。「ロードバランサー」として請求されます。

単一のサーバーが複数のワーカーにタスクを送信する場合、プッシュ/プルはすべてのクライアント間でタスクを均等に渡します。3つのクライアントと30のタスク、各クライアントは10のタスクを取得します。client1はタスク1、4、7、... client2、2、5、...などを取得します。けっこうだ。文字通り。

ただし、実際には、タスクの複雑さやクライアントのコンピューティングリソース(または可用性)が不均一に混在していることが多く、このパターンはひどく壊れます。すべてのタスクは事前にスケジュールされているようであり、サーバーはクライアントの進行状況や、クライアントが利用可能かどうかさえも認識していません。client1がダウンした場合、残りのタスクは他のクライアントに送信されませんが、client1のキューに入れられたままになります。client1がダウンしたままの場合、これらのタスクは処理されません。逆に、クライアントがタスクの処理を高速化する場合、他のクライアントに対してスケジュールされたままであるため、それ以上のタスクは取得されず、アイドル状態のままになります。

使用するREQ/REPことは1つの可能な解決策です。タスクは、使用可能なリソースにのみ与えられます。

だから私は何かが欠けていますか?どのようPush/Pullに効果的に使用されますか?このソケットタイプでクライアントやタスクなどの非対称性を処理する方法はありますか?

ありがとう!

簡単なPythonの例を次に示します。

コマンドラインで遅延パラメーター(つまり、1、1、0.1)を使用して3つのクライアントを起動し、次にサーバーを起動して、すべてのタスクがどのように均等に分散されているかを確認します。次に、クライアントの1つを強制終了して、残りのタスクが処理されていないことを確認します。

示された行のコメントを外して、タイプソケットに切り替えReq/Rep、より効果的なロードバランサーを監視します。

0 投票する
1 に答える
1873 参照

node.js - zmqソケットからの戻り値

Socket.IOを使用して、クライアントのWebページにNode.JSサーバーから動的にデータをフェッチさせています。サーバー側では、zeromqソケットライブラリ(REQ / REP構造、zguideのrrclient.jsの例を参照)を使用して、リクエストをPythonバックエンドに転送しています。

ただし、私のサーバーはsocket.ioサーバーとして機能しているため、特定のクライアントに返送するには、応答を次のようにラップする必要があります。

そのため、fetch_data関数はzmqソケット(socket.send)を使用してサーバーにリクエストをプッシュします。

ただし、Node ZMQソケットは、socket.on('message'、function(){});を使用して要求に応答します。リスナーであり、実際には何も返しません。

socket.on('message'、function(){});を使用するにはどうすればよいですか。socket.send()リクエストを開始した特定の関数に値を返すには?

つまり、クライアントのsocket.ioリクエストを取得して、Node.JSがZMQを使用してPythonバックエンドから関連データをフェッチし、それをsocket.ioクライアントに返すようにするにはどうすればよいですか?(もちろん、ノンブロッキング方式で)

0 投票する
1 に答える
2790 参照

python - マルチスレッドと ZMQ DEALER/REP hello world が機能しない

まず、私のコード (主に ZMQ doc http://zguide.zeromq.org/py:mtserverからインスピレーションを得ています):

このコードを inproc ソケットと tcp ソケットの両方で試しました。

  • ワーカーが接続しようとすると inproc がエラーを出す
  • TCP はディーラーでの送信後待機するだけで、ワーカーからの印刷は表示されず、ディーラーで他のメッセージは受信されません。
  • ジョイナーが遅い問題を考えて、スリープを追加します (ワーカーが接続する前に 1 つ、ディーラーの send() の前に 1 つ) : これにより、inproc が TCP と同じように動作します。

PS : camelCase には申し訳ありませんが、ハマっています。

0 投票する
1 に答える
4168 参照

zeromq - pyzmqソケットキュータイムアウトを設定する方法

zeromqを接続しましたが、「msg_in」はすでにキューに入れられています。一定期間内に新しいメッセージがない場合、キューはタイムアウトのセットになります。タイムアウトを設定する方法。以下はコアコードです

0 投票する
1 に答える
603 参照

python - ZeroMQ のインストール エラー

上記のエラーが発生しています。ZeroMQ の公式サイトに記載されている手順に従いました。