問題タブ [pyro]

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 に答える
266 参照

python-2.7 - Pyro4 は ConnectionClosedError をスローしません

Pyro 4.31 を実行しています。プロキシ オブジェクトがリモート オブジェクトへの接続を失ったとき (つまり、サーバーが突然シャットダウンしたとき) に、例外をキャッチできるようにする必要があります。

だから私はこのようなコードを持っています:

ある時点でこれが機能し、接続が失われた場合に ConnectionClosedError がスローされましたが、現在はサーバーがダウンしていても待機コマンドでハングし続けます。Pyro4 コードを調べたところ、待機コマンドは Event ブール値が True に設定されるまで待機するため、接続が失われると待機コマンドのブロックが解除される方法がわかりません。これは、サーバーがダウンしているときに実行することはまったく不可能です。サーバーがまだ稼働しているが、pyro デーモンをシャットダウンし、進行中のプロセスを突然強制終了すると、接続が閉じられたというエラーがスローされますが、サーバー全体がダウンしたときにそれが必要です。

非同期オブジェクトを使用しないと、これでも同じ問題が発生します (ハングするだけです):

では、接続が失われたことをどのように検出できますか?

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

python - Pyron ns=True が機能しない

私はRPCとPyroに全く慣れていないので、その概念を理解しようとしています.私はそれのウェブサイトの例をやっています.ns=False.Iのときに動作しているにもかかわらず、ns=Trueを実行するとコードが動作しません.このエラーが発生しています:

Pyro4.errors.NamingError: ネームサーバーを見つけられませんでした

ipdb でデバッグすると、次のように表示されます。

CommunicationError: 接続できません: [Errno 111] 接続が拒否されました

デーモンを起動しない解決策は何ですか?

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

python - パラメータを取るコンテキストマネージャで何かをラップするデコレータを作成するにはどうすればよいですか?

デコレーター内でコンテキストマネージャーを使用する方法と、デコレーターで作成されたオブジェクトを装飾された関数に渡す方法、およびパラメーター付きのpythonデコレーターを見てきましたが、2つを組み合わせようとしています..しかし、苦労しています私の頭を丸めてください。

@wrapドキュメント文字列が保持されるかどうかはわかっているので、可能であればfunc tools デコレータを使用してこれを行うことをお勧めします。

私がやりたいことはこれです:

私はこれがこのように機能するとは思わない. メソッドreturn_employee_namesは接続の反対側のサービスにある. 関数呼び出しを返すだけですか?もしそうなら、どうやってパラメータを渡すのですか?

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

python - PYRO4 - Errno 10061 接続が拒否されました

PYRO4 と Python 2.7 を使用して、クライアント マシンを別のネットワークのサーバー マシンに接続しようとしています。

私のサーバーコードは次のとおりです。

クライアントコードは次のとおりです。

ただし、サーバーを実行すると、次のエラーが発生しました。

この問題を修正するために 8 時間以上探していますが、永遠に修正されることはないようです。どなたか解決策をご存じの方がいらっしゃればお願いします。

注: 1. ルーターの背後でサーバーを実行しているため、ポート 5555 をプライベート IP アドレスに転送しました。また、オンラインサービスでポートをテストし、正しく開いていました。

  1. ファイアウォールとウイルス対策ソフトウェアを閉じました。
0 投票する
0 に答える
1774 参照

uri - Python: Pyro: OpenOPC: 接続に失敗しました

Python 用の OpenOPC を Pyro と組み合わせてセットアップしようとしています。OPC サーバーに接続しようとすると、次のエラーが表示されます。

Pyro.errors.ProtocolError: 接続に失敗しました

これを調べたところ、Pyro がサーバーをループバック アダプターにバインドしているようです (外部から見えないようにしています)。

私がこれまでに試したこと:

etc/hosts ファイルを編集します。

これはうまくいきませんでした。

Pyro から configuration.py を編集します。

これもうまくいきませんでした。また、Pyroネームサーバーを再起動/再起動した後。

誰かがそれを機能させるために他に何ができるか考えていますか? Windowsコンピューター(OPCサーバーと同じもの)でOpenOPCクライアントも実行しましたが、これは機能しました。Windows コンピューターと Ubuntu コンピューターで同じバージョンの Pyro を使用しています。

編集: OpenOPCService.py も変更しました:

これもうまくいかない…

誰でも助けてもらえますか?これまでのところ成功することなく、これに1日以上取り組んでいます...

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

python - Pyro4.proxy(uri) 呼び出しを実行しようとすると、接続されていないというエラーが発生し続けます

Pyro4 に問題があり、Python サーバーに接続しようとしても接続できません。しかし、私が知る限り、サーバーは正常に動作しています。「接続されていません」という問題が常に発生します。接続されていない場合、オブジェクトに対してpython関数呼び出しを行うことはできません。

環境で実行されているものをリストすると、次のようになります。

私が言える限り、すべてが良さそうです。私はこのようにCASAを始めました:

これは CASA (ネームサーバー) コンソール出力です -- (実行中)

注: NS_HOST を localhost の代わりに IP アドレスに設定しようとしましたが、問題には影響しませんでした。

手順を手動で実行するとどうなるかのサンプルを次に示します

これが起こる原因は何ですか?この種のエラーを追跡する方法はありますか? 問題を解決するためのより深いレベルのデバッグが好きですか?

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

python - Pyro4 が COMMTIMEOUT 後に接続を閉じるのを防ぐにはどうすればよいですか?

次のような状況があります。私の Pyro4 プロジェクトには、サーバーとクライアントがあります。サーバーには、同じコールバック オブジェクトで 2 つのコールバックを呼び出す必要があるメソッドが含まれています。したがって、クラスCallbackには と の 2 つのコールバック メソッドがCallback()ありSecondCallback()ます。これらのコールバック メソッドの呼び出しの間には、多少の遅延があります。を呼び出して、私の例でこの遅延をシミュレートしましたtime.sleep

Pyro4 ( Pyro4.config.COMMTIMEOUT) にタイムアウトを設定する必要があります。これがないと、Pyro4 デーモンがrequestLoopメソッドから抜け出せないからです。これは、コールバック メソッドを 1 つだけ呼び出す場合には完全に機能しますが、2 つ目のコールバック メソッドを呼び出す必要がある場合、Pyro4 コールバック デーモンは、最初のコールバック メソッドが呼び出された後 + タイムアウトして接続を閉じます。

タイムアウトをより大きな値に設定しようとしましたが、このタイムアウトは、requestLoopメソッドが loopCondition を処理するまでブロックする時間でもあります。

私の問題を示すスクリプトの例を以下に示します。Pyro4 ネームサーバーを起動した後、サーバーを起動して起動する必要があります:

python -m Pyro4.naming

python test.py -s

その後、新しいコマンド ウィンドウでクライアントを起動します。

python test.py

Test.py

このスクリプトの結果:

Server:

Client:

私の最後の質問は: 2 番目のコールバックが呼び出されたときに COMMTIMEOUT が期限切れになった後、Pyro4 が接続を閉じないようにするにはどうすればよいですか?

この情報がすべて理解できるほど明確であることを願っています。

ご協力ありがとうございました。