A classe de serviço

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. 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.