Os serviços Google Protocol RPC são criados através de um construtor ou de uma fábrica que não recebe parâmetros. No entanto, algumas aplicações têm de transmitir algum estado ou configuração para um serviço em vários pedidos. Para tal, defina parâmetros para o construtor do serviço e use o método de classe new_factory() para criar uma fábrica que transmita parâmetros para o construtor. Por exemplo:
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)
O contrato com qualquer controlador de serviços é que é criado um novo objeto de serviço para processar cada pedido do utilizador e que a construção não recebe parâmetros. A fábrica cumpre esta condição:
new_instance = my_service_factory()
assert new_instance.state is global_state
O Service
é fornecido pelo módulo protorpc.remote
.
Propriedades da classe
Serve instâncias de serviços de uma propriedade:
- request_state
- Estado do pedido associado a esta instância do serviço.
Métodos de classe
A classe Service fornece os seguintes métodos de classe:
- all_remote_methods()
-
Obtém todos os métodos remotos para uma classe de serviço.
Nota: os métodos incorporados não aparecem no dicionário de métodos remotos.
Devolve um dicionário que mapeia nomes de métodos para métodos remotos.
- new_factory(args, **kwargs)
-
Cria uma fábrica para um serviço. Útil para transmitir objetos de configuração ou de estado ao serviço. Aceita parâmetros e palavras-chave arbitrários. No entanto, o serviço subjacente também tem de aceitar outros parâmetros no respetivo construtor.
Argumentos- args
- Argumentos a transmitir ao construtor do serviço.
- **kwargs
Devolve uma função de fábrica que cria uma nova instância e encaminha argumentos e palavras-chave para o construtor.
Métodos de instância
As instâncias de serviço têm os seguintes métodos:
- initialize_request_state(request_state)
- Argumentos:
- request_state
- Uma instância de RequestState.