A classe de serviço

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.