ローカルで使用されるクラスを持つプログラムを作成していますが、同じクラスをネットワーク経由で同じ方法で使用したいと考えています。これは、パブリック メソッドのいずれかに対して同期呼び出しを行うことができる必要があることを意味します。このクラスはファイルを読み書きするので、XML-RPC はオーバーヘッドが大きすぎると思います。twisted の例を使って基本的な rpc クライアント/サーバーを作成しましたが、クライアントに問題があります。
c = ClientCreator(reactor, Greeter)
c.connectTCP(self.host, self.port).addCallback(request)
reactor.run()
これは 1 回の呼び出しで機能します。データが受信されたら、reactor.stop() を呼び出しますが、それ以上呼び出しを行うと、リアクターは再起動しません。これに使用する必要があるものは他にありますか?おそらく別のツイストモジュールまたは別のフレームワークですか?
(プロトコルがどのように機能するかの詳細は含めません。要点は、ここから 1 つの呼び出ししか得られないということです。)
補遺と説明:
私がやっていることについてのメモを含むGoogleドキュメントを共有しました。http://docs.google.com/Doc?id=ddv9rsfd_37ftshgpgz
ヒューズを使用し、複数のローカル フォルダーをヒューズ マウント ポイントに結合できるバージョンを作成しました。ファイル アクセスは既にクラス内で処理されているため、同じクラスへのネットワーク アクセスを提供するサーバーが必要です。検索を続けた後、私は pyro ( http://pyro.sourceforge.net/ ) が私が本当に探しているものかもしれないと思っています (単に彼らのホームページを今読んだことに基づいています) が、私はどんな提案も受け入れます.
nfs マウントを使用してローカル フォルダーと組み合わせることで同様の結果を得ることができますが、すべてのピアが同じ組み合わせファイルシステムにアクセスできるようにするため、すべてのコンピューターが多数の nfs を持つ nfs サーバーである必要があります。ネットワーク内のコンピューターの数と同じ数をマウントします。
結論: rpyc を使用することにしました。探していたものが正確に得られたからです。ローカルであるかのように操作できるクラスのインスタンスを保持するサーバー。誰かが興味を持っている場合は、私のプロジェクトを Launchpad ( http://launchpad.net/dstorage ) に掲載します。