問題タブ [perspective-broker]
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 - パースペクティブ ブローカー (複合型) で複数のオブジェクトを渡す
2番目のオブジェクト(bClass)を持つプロパティを持つオブジェクト(aClass)を渡そうとすると、次のようになります:
Unpersistable('Unpersistable data: クラス amodule.bClass のインスタンスは安全でないと見なされます')
aClass はコピー可能でゼリー化されていませんが、bClass はそうではありません。
これが私のコードです:
サーバー.py:
amodule.py:
aClass とそれに含まれるすべてのオブジェクトを unjelly する方法はありますか? インクルードされたオブジェクトの解凍は頭痛の種であり、汚いコードに変わる可能性があるため...
python - Twisted パースペクティブ ブローカーでクライアントのリモート メソッドを呼び出す
クライアントとサーバー間の通信に twisted の Perspective Broker を使用しています。クライアントはサーバーにリモート メソッド 'remote_ftp_listen' を要求します。これにより、PB サーバーは FTP 接続を開始し、あるパターンに一致するファイルがディレクトリで見つかるまで待機します。その後、PB サーバーはクライアントにそのイベント (目的の ftp ディレクトリでファイルが見つかりました) を通知する必要があります。
このリバース コールを実現する方法 (PB サーバー > PB クライアント) ? クライアント側でメソッドをコールバックする必要があることをサーバーに伝えるようなものです... PBを介してそれが不可能な場合、それを実現するために何をするようにアドバイスしますか?
python - Perspective Broker は、TCP の代わりに stdio で使用できますか?
プロセスとサブプロセスの間の RMI に Twisted の Perspective Broker を使用しています。
reactor.listenTCP()
(のインスタンスを渡すなどしてPBServerFactory
) TCP ソケットをリッスンし、サブプロセスをそれに接続させるよりも、サブプロセスの stdin と stdout を使用することをお勧めします。
を見つけましたがtwisted.internet.stdio.StandardIO
、それでよいのであれば、すべてを設定する方法がわかりません。
TCP の代わりに PB over stdio を使用することは可能ですか? どのように?
待って、なぜ?
サブプロセスは、信頼できないコードを実行するためのものです。サンドボックス化されていますが、限られた方法で親プロセスと通信できる必要があります。RMI の何らかの形式は、特定のユース ケースに対して最もクリーンなオプションであり、PB には適切に見えるアクセス モデルがあります。しかし、サンドボックス化されたプロセスには、ネットワーク アクセスがありません (また、その必要もないはずです)。その RMI は外部世界との唯一の通信であり、stdin/stdout を介してパイプすることは、ビジネスを行うためのクリーンな方法のように思えます。
しかし、私がこれを正しい方法で行っていない場合、それも完全に有効な答えです.
python - pb.Viewable のパースペクティブ引数が None として渡されるのはなぜですか?
サーバーがツイストのパースペクティブ ブローカーでリモート リクエストを行っているクライアントを認識できるようにする方法を理解しようとしています。私はtwisted.spread.pb.Viewable
これを使用することになっていると思いますが、Viewable のメソッドでパースペクティブ引数を試してみると、view_*
None です。
私はこのサーバーを運営しています
そしてこのクライアント
サーバーからの出力は
パースペクティブ引数が None なのはなぜですか?
python - Twisted 全般、特に pb を理解するのに苦労している
誰かが次の違いを説明してください。私は Deferred のコンセプトを理解するのに本当に苦労しています。しかし、私はコードブラインドでなければならないと思います。本当にシンプルだと思います。
これは機能します。
そして、これはしません
私は一生、理由を理解できません。次のエラーでクラッシュします。
サーバー側のコードは
python - Twisted PB サーバーに接続するクライアントの追跡
サーバーとの間で情報を取得するために Twisted PB を使用していくつかのバックアップ ソフトウェアを作成していますが、すべて非常にうまく機能しています。
私ができるようにしたいのは、どのクライアントがサーバーに接続されているかを追跡することです。クライアントの接続時にログに記録された接続の IP アドレスを取得できました。最初に、クライアントは 1 つのメソッドだけを持つ pb.Root オブジェクトにアクセスします。このメソッドは、格納されたデータへのアクセスを提供する別のオブジェクトを返します。
私がやりたいことは、接続されたクライアントの接続の詳細を更新して、サーバーに送信される呼び出しで送信される情報を含めることです。
クライアントロギングのコードは次のとおりです
初期接続メソッドのコードは次のとおりです。
クライアントの切断もログに記録する方法がわかりません。誰かが助けてくれれば、本当に感謝します
twisted - 参照可能な PB を含む Twisted PB Spawnprocess
大量のメモリを消費するサーバー アプリケーションを作成しています。Python が OS にメモリを返さないという問題があるため、時間の経過とともにアプリケーションがより多くのメモリを消費します。多くのテストを行い、使用している大きなオブジェクトが適切にリリースされていることを確認したため、Python の問題です。
私が見つけた回避策の 1 つは、メモリを大量に使用する作業を別のプロセスで実行し、終了したらこのプロセスを強制終了することです。ただし、クライアントが接続されている間は常にメモリを大量に消費する操作が発生します。
Twisted Perspective Broker を使用してクライアント/サーバー通信を処理するサーバーを作成しましたが、正常に動作します。私が達成しようとしているのは、サーバーに接続することです。認証が行われると、ユーザーが接続されている間は常にアクティブなプロセスが生成され、ユーザーが切断されたときにそのプロセスを停止することで、メモリの問題が解決するはずです。
このプロセスを処理する最善の方法を見つけようとしています。接続時に別のプロセスを実行するために使用できますreactor.spawnprocess
が、PB 呼び出しをこのサブプロセスにプロキシする最善の方法がわかりません。
あなたが提供できるアドバイスは素晴らしいでしょう。
python - twisted の pb システムでダミー オブジェクトが作成されるのはなぜですか?
以下に示すように、 ではtwisted.spread.flavors.RemoteCache.unjellyFor
、 というダミー オブジェクトを作成し、 をcProxy
返すのではなく、それをクライアント コードの残りの部分に返しself
ます。
_newDummyLike の本体は次のようになります。
ダミー オブジェクトはそのandを「実際の」オブジェクトとcProxy
共有しているため、ダミーを作成する意味がまったくわかりません。なぜダミーが作成されたのですか?__dict__
__class__