Python を使用して RPC 呼び出しを行う方法を理解しようとしています。クラスを定義し、そのクラスのインスタンスを作成するメソッドを公開する愚かなサーバーがあります。
# server.py
class Greeter(object):
def __init__(self, name):
self.name = name
def greet(self):
return "Hi {}!".format(self.name)
def greeter_factory(name):
return Greeter(name)
some_RPC_framework.register(greeter_factory)
のインスタンスを取得したいクライアントGreeter
:
# client.py
greeter_factory = some_RPC_framework.proxy(uri_given_by_server)
h = greeter_factory("Heisemberg")
print("Server returned:", h.greet())
問題は、ユーザー定義オブジェクトのインスタンスを返すことを許可するフレームワーク、またはオブジェクトの属性を持つ dict のみを返すフレームワーク (たとえば、Pyro4) を見つけられなかったことです。
以前は Java RMI を使用していました。この場合、必要に応じて、クライアントがコンパイル済みのクラスをダウンロードできるサーバー上のコードベースを指定できます。Pythonにこのようなものはありますか?クライアントがクラスの完全に機能するインスタンスを持つことができるように、オブジェクトをクラスのバイトコードと一緒にシリアル化できるフレームワークでしょうか?