問題タブ [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 に答える
601 参照

ipython - ipython 0.13 zmq エラー

ipython クラスターの奇妙な動作に遭遇しました。計算は終了しますが、多くの結果はクライアントに到達しません (また、エンジンは最初の計算が終了した後、アイドル状態になります)。

1)時々次のエラーが表示されるため、zmqに何か問題があると思われます。

私はpyzmq 13.0.0(pipによってインストールされたもの)と、pyzmqのセットアップによってコンパイルされたzeromq 3.2.2を使用しています。私は ipython 13.1 と python 2.7.3 を使用しています。

これが何であるかについての提案はありますか?そうでない場合は、これらのエラーが発生する理由をさらに詳しく知る方法はありますか?

更新: スローダウンは ipcontroller の長いタスク キューが原因であることが判明しました。これは 100% の CPU を使用し、ひどく遅れていました。それは別の問題ですが、上記に関するフィードバックをいただければ幸いです。

0 投票する
3 に答える
1989 参照

python - 単一スレッドからの ZeroMQ プロセス間通信でメッセージが失われる

現在、自分の zeromq アプリケーションをテストする可能性を探っています。パブリッシャー/サブスクライバーを同じスレッドに配置して、メッセージを失うことなくパブリッシャーにパブリッシュさせ、サブスクライバーにサブスクライブさせることができるという印象を受けました。しかし、パブリッシャーにいくつかのメッセージを送信させると、サブスクライバーには何も届きません。

私が使用するコードは次のとおりです。

これを実行すると、出力が得られません。

私が驚くのは、送信者が送信する前に受信者が接続されているため、これらのメッセージをキューに入れる必要があるということです。それとも、それは明らかに間違っている仮定であり、代わりに PUSH/PULL を使用する必要がありますか?

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

python - pyzmq は、独自のソケットを持つプロセスを作成します

私は他のいくつかの変更ファイルを監視するコードをいくつか持っています。私がやりたいことは、別のソケットで zeromq を使用するコードを開始することです。私が今それを行っている方法では、libzmq のどこかでアサーションが失敗するようです。同じソケット。モニター クラスから新しいプロセスを作成するときに、コンテキストが再利用されないようにするにはどうすればよいですか? それが私が起こっていると思うことです。私の側に他の愚かさがあると言うことができるなら、アドバイスしてください。ここにいくつかのコードがあります:

何が起こっているのかというと、すべての監視プロセスと単一のprefectプロセスが同じポートでリッスンする必要があるため、prefectがまだ見ていないリクエストを確認すると、そのプロセスを開始し、おそらく存在するすべてのプロセスもリッスンする必要がありますが、彼ら向けではないメッセージを無視します。現状では、これを行うと、おそらく何かによる同じzmqソケットの同時アクセスに関連するクラッシュが発生します(threading.threadを試しましたが、まだクラッシュします)別のスレッドによるzmqソケットの同時アクセスは不可能であることをどこかで読みました. 新しいプロセスが独自の zmq ソケットを取得するようにするにはどうすればよいですか?

編集:私のアプリの主な取引は、リクエストがzmqソケットを介して着信し、リッスンしているプロセスがメッセージに反応することです:

more-edit=>prefect プロセスがバインドされ、メッセージを受信して​​エコーし、モニターで表示できるようにします。これは、アーキテクチャとして私が考えていることですが、最終的なものではありません。.

すべてのメッセージは、クライアントが何を望んでいるのかをサーバーに知らせるブラウザを介してリモートユーザーから到着し、サーバーはzmqを介してメッセージをバックエンドに送信します(これは示していませんが、難しいことではありません)ので、本番環境ではバインドしない可能性があります/localhost に接続します。私が DEALER を選択したのは、どちらの方向でも asyc / 無制限のメッセージを許可し (ポイント 5 を参照)、DEALER は DEALER とバインドでき、最初の要求/応答はどちらの側からでも到着できるためです。これを行うことができるもう 1 つは、おそらく DEALER/ROUTER です。

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

python - 切断後の ZMQ フィードへの再接続

ZMQフィードに接続していくつかのデータを吐き出すこの単純なpythonスクリプトがあります:

これは私のホームサーバーで実行されています。自宅のサーバーがインターネットへの接続を失うことがあります。これは、住宅接続の呪いです。ただし、ネットワークがドロップアウトして再びオンになると、スクリプトは停止します。接続を再初期化する方法はありますか? 私はまだpythonを初めて使用しています。正しい方向へのポイントは素晴らしいでしょう。=)

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

python - データ取得チェック PUB/SUBパターン

いくつかのデータを収集してクライアントに送信するサーバーがあります。クライアントがサーバーから送信されたデータを取得したことを確認する必要があります。ここの PUB/SUB パターンが最良の選択だと思いましたが、クライアントがデータを取得したかどうかを確認する方法がわかりませんか? 信頼できる PUB/SUB について聞いたことがありますが、実際の例はありません。

考え、提案、例、ヘルプはありますか?

単純な発行元:

シンプルなサブスクライバー:

この例では、サブスクライバーが「メッセージ」を受け取ったことを確認する必要があります。

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

zeromq - zmq.DEALER に送信されるメッセージごとに 2 回受信する必要があるのはなぜですか?

ZMQ で REP/DEALER 接続をセットアップしたところ、REP が 1 つのメッセージを DEALER に送信すると、DEALER はメッセージを取得するために 2 回受信する必要があることがわかりました。どうしてこれなの?

これを複製するコードは、この SO answerのコードの修正版です。彼らのコードはワーカーごとに 1 回しか受信しませんが、これをテストしたところ、1 つの「ワールド」しか返されませんでした。2つの「世界」を取り戻すには、4回受け取る必要がありました。

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

python - 死んだサーバーでZeroMQを使用している間のpythonスクリプトの終了

ZeroMQ の使用中に Python アプリケーションを閉じる際に問題が発生しました。最初に、実行されていないサーバーに接続します!

そして私のメッセージを送る

返事を待っています

サーバーが停止しているため、メッセージは送信されず、返信もありません。それは本当です。次に、ソケットを閉じてポーラーから登録解除し、新しいソケットで生きているサーバーに接続し、ソケットでメッセージを送信して応答を取得します。

その後、アプリケーション (python スクリプト) は閉じられません (終了)! それは私の問題です。[アプリケーションを閉じることはできますがsig_term、何らかの理由で使用しません。] 最初のメッセージをデッド サーバーに送信しないと、アプリケーションは完全に閉じられます。問題は ZeroMQ io スレッドだと思いますが、解決できません。

0 投票する
4 に答える
2802 参照

python - KeyboardInterrupt で pyzmq レシーバーを停止する

ØMQ ドキュメントのこの例に従って、単純なレシーバーを作成しようとしています。この例では、無限ループを使用しています。すべてがうまく機能します。ただし、MS Windows では、CTRL+C を押して KeyboardInterrupt を発生させても、ループは中断されません。recv()メソッドがどういうわけか例外を無視しているようです。ただし、プロセスを強制終了するのではなく、CTRL + C を押してプロセスを終了したいと考えています。それは可能ですか?