問題タブ [rpyc]
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.
python - rpyc.Connection を介して停止したサーバー プロセスを検出する
Service があるとします。
ここで、ThreadedServer で実行されている Service を開始します。
同じマシンの別のプロセスで、サーバーへの新しい接続を開きます。
...しかし、接続のルートにアクセスする前に、サーバープロセスの制御端末で Ctrl-Z などの理由でサーバープロセスが停止します。今、次の方法でルートにアクセスしようとすると:
... Python がハングします。クライアント側で Ctrl-C を実行すると、次のようになります。
そのため、サーバー プロセスが停止していても接続されている (基になるソケットがまだ開いている) 場合、Stream.pollへの呼び出しは無限ループで終了するようです。これは Stream の実装では予期しないケースであると考えるのは正しいですか? バージョン 3.3.0 を使用しています。このケースを検出し、クライアントのハングを回避するにはどうすればよいですか?
multithreading - Rpyc Python: Rpyc サービス スレッド開始呼び出しがブロックされています
サーバーは正常に起動し、値を更新できますが、hello world 文字列が出力されません。プログラムが t.start() でスタックしています。どうすればブロックしないようにできますか。
python - rpyc.Service に似ているがローカルのみの Python サービス
とても素朴な質問です...
他の Python アプリケーション (すべてが同じマシン上で実行されている) にサービスを提供する中心的な Python プログラムが必要です。私にとって最も簡単なのは、他のアプリケーションがサーバーによって提供される関数を直接呼び出すことができることです。私はrpyc(Remote Python Call)を知っており、クラスは(このチュートリアルrpyc.Service
のように)仕事をすることができましたが、「リモート」は何も望んでいません(すべてのクライアントはローカルで、サーバーと同じマシンで実行されている必要があります)。 rpyc を使用するよりもこれを行うためのより良い方法があるかどうか疑問に思っていましたか?
python - python RPyC ユーザー数
RPyC を使用して、ハードウェア ボードの API をサービスとして提供したいと考えています。ボードは、一度に 1 人のユーザーしか対応できません。一度に 1 人のユーザーのみがアクセスできるように RPyC を強制する方法はありますか?
python - rpyc を使用してリモート オブジェクトのプロパティを更新する
アプリケーション内で rpyc を使用していますが、小さな問題が発生しました。
リモート プロパティを更新できるかどうか知りたいのですが。
テストサーバーがあります:
そしてipythonコンソール内:
リモート プロパティを更新することはできますか?
python - Rpyc: 1 つのクライアントから多数のサーバーへ
同じクライアントを多数のサーバーに接続するにはどうすればよいですか?
私はもう試した:
しかし、async_result0/1.wait() を実行すると、実際に実行されるのは後者だけです。
python - Python インタープリターでグローバル名ルックアップをフックする
リモートモジュールへの参照を保持するプロキシがあり、これらのプロキシのいくつかをsys.modules
ローカルモジュールと同じように使用できるようにします。しかし、他のいくつかのオブジェクトは__builtin__
、リモート環境でモジュールに入れられます (デバッグや参照に便利なマジック変数など)。のようにこれらの var を参照したくありませんconn.__builtin__.var
。ローカル__builtin__
を置き換える必要があります (replace では機能しないsys.modules['__builtin__']
か、グローバルな名前検索ルールをフックする必要があります。どうすればよいでしょうか?モジュールの場合は、getattr
これを行うために a をオーバーロードするだけです。しかし、のようなインタラクティブなインタープリターIPython
で、メインモジュールは誰ですか、またはこれを行う方法は? 更新: @Nizam Mohamed が指摘したように、はい、取得できます__main__
モジュールですが、それでも名前検索の役割を変更できません。
ローカル環境を完全にリモート環境にしたい (デバッグ コンソール用)
アップデート
今のところ__builtin__.__dict__
、ローカルにない名前がある場合は、すべてを繰り返すだけ__builtin__
です。ローカルの に名前を追加し__builtin__
ます。しかし、ローカルで名前が見つからない場合は__builtin__
、リモートの名前を試してみてください。
ここに同様の議論があります。
そして、この質問は、モジュールを のオブジェクトに置き換えることで、モジュールのシミュレーションを提供しますsys.modules
。しかし、これは名前ルックアップでは機能しません。また、最初に元のルックアップを使用し、失敗したときにカスタム ルックアップを使用するカスタム ルックアップ__builtin__
に置き換えようとしました。ただし、イベントに呼び出されないグローバル__builtin__.__getattribute__
名のルックアップは、目的の値を返すか、値を返しません。__builtin__
__builtin__.__getattribute__
__builtin__.__getattribute__('name')
__builtin__.name
name