Os serviços RPC do protocolo do Google são criados por meio de um construtor ou uma fábrica que não usa parâmetros. Entretanto, alguns aplicativos precisam passar algum estado ou configuração para um serviço por várias solicitações. Para fazer isso, defina os parâmetros para o construtor do serviço e use o método de classe new_factory() para construir uma fábrica que transmitirá 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 manipulador de serviço é que um novo objeto de serviço seja criado para manipular cada solicitação do usuário e que a construção não assuma parâmetros. A fábrica satisfaz essa condição:
new_instance = my_service_factory()
assert new_instance.state is global_state
Service
é fornecido pelo módulo protorpc.remote
.
Propriedades da classe
Os serviços instanciam uma propriedade:
- request_state
- Estado de solicitação associado a esta instância de Service.
Métodos de classe
A classe Service fornece os seguintes métodos de classe:
- all_remote_methods()
-
Recebe todos os métodos remotos para uma classe Service.
Observação: os métodos incorporados não aparecem no dicionário dos métodos remotos.
Retorna um dicionário que mapeia nomes de método para métodos remotos.
- new_factory(args, **kwargs)
-
Cria uma fábrica para um serviço. Útil para passar objetos de configuração ou estado para o serviço. Aceita parâmetros arbitrários e palavras-chave, mas o serviço subjacente também não pode aceitar outros parâmetros no construtor.
Argumentos- args
- Argumentos a serem passados para o construtor do serviço.
- **kwargs
Retorna uma função de fábrica que cria uma nova instância e encaminha argumentos e palavras-chave para o construtor.
Métodos da instância
As instâncias de Service têm os métodos abaixo:
- initialize_request_state(request_state)
- Argumentos:
- request_state
- Uma instância de RequestState.