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 인스턴스에는 다음과 같이 한 개의 속성이 있습니다.
- request_state
- 이 Service 인스턴스와 연결된 요청 상태입니다.
클래스 메서드
Service 클래스는 다음과 같은 클래스 메소드를 제공합니다.
- all_remote_methods()
-
Service 클래스의 모든 원격 메소드를 가져옵니다.
참고: 기본 제공 메소드는 원격 메소드 사전에 나타나지 않습니다.
메소드 이름을 원격 메소드에 매핑하는 사전을 반환합니다.
- new_factory(args, **kwargs)
-
서비스의 팩토리를 만듭니다. 서비스에 구성 또는 상태 객체를 전달하는 데 유용합니다. 임의의 매개변수와 키워드를 허용하지만 기본 서비스는 해당 생성자에서 다른 매개 변수를 허용하지 않아야 합니다.
인수- args
- 서비스 생성자에 전달할 인수입니다.
- **kwargs
새 인스턴스를 만들고 인수와 키워드를 생성자에 전달하는 팩토리 함수를 반환합니다.
인스턴스 메소드
Service 인스턴스에는 다음과 같은 메소드가 있습니다.
- initialize_request_state(request_state)
- 인수:
- request_state
- RequestState 인스턴스입니다.