Google Protocol RPC サービスは、コンストラクタまたはパラメータを受け取らないファクトリを使用して作成されます。しかし、一部のアプリケーションでは、複数のリクエストにまたがって状態または構成をサービスに渡す必要があります。これを行うには、サービスのコンストラクタへのパラメータを定義し、new_factory() クラス メソッドを使用して、コンストラクタにパラメータを渡すファクトリを作成します。次に例を示します:
from protorpc import remote
class MyService(remote.Service):
def __init__(self, configuration, state):
self.configuration = configuration
self.state = state
configuration = MyServiceConfiguration()
global_state = MyServiceState()
my_service_factory = MyService.new_factory(configuration,
state=global_state)
サービス ハンドラとの取り決めでは、ユーザー リクエストを処理するたびに新しいサービス オブジェクトを作成すること、パラメータを受け取らないことが必要です。ファクトリはこの条件を満たします。
new_instance = my_service_factory()
assert new_instance.state is global_state
Service
は protorpc.remote
モジュールによって提供されます。
クラスのプロパティ
Service でインスタンス化されるプロパティは次の 1 つです:
- request_state
- この Service インスタンスに関連するリクエストの状態です。
クラス メソッド
Service クラスには次のクラス メソッドがあります:
- all_remote_methods()
-
Service クラスのすべてのリモート メソッドを取得します。
注: 組み込みのメソッドは、リモート メソッドのディクショナリに表示されません。
メソッド名をリモート メソッドにマップするディクショナリを返します。
- new_factory(args, **kwargs)
-
サービスのファクトリを作成します。 設定オブジェクトまたは状態オブジェクトをサービスに渡すのに役立ちます。任意のパラメータとキーワードを受け取りますが、基になるサービスでは、コンストラクタで他のパラメータを受け取ってはいけません。
引数- args
- サービスのコンストラクタに渡す引数です。
- **kwargs
新しいインスタンスを作成するファクトリ関数を返し、引数とキーワードをコンストラクタに渡します。
インスタンス メソッド
Service インスタンスには次のメソッドがあります:
- initialize_request_state(request_state)
- 引数:
- request_state
- RequestState インスタンス。