La clase Service

Los servicios RPC del protocolo de Google se construyen a través de un constructor o una fábrica que no toma parámetros. Sin embargo, algunas aplicaciones necesitan pasar algún estado o configuración a un servicio a través de varias solicitudes. Para ello, define los parámetros del constructor del servicio y usa el método de clase new_factory() para crear una fábrica que transmita los parámetros al constructor. Por ejemplo:

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)

El contrato con cualquier controlador de servicios es que se cree un objeto de servicio nuevo para controlar cada solicitud del usuario y que la construcción no tome ningún parámetro. La fábrica cumple esta condición:

new_instance = my_service_factory()
assert new_instance.state is global_state

El módulo protorpc.remote proporciona Service.

Propiedades de clase

Instancias de servicio de una propiedad:

request_state
Estado de solicitud asociado a esta instancia de Service.

Métodos de clase

La clase Service proporciona los métodos de clase siguientes:

all_remote_methods()

Obtiene todos los métodos remotos para una clase Service.

Nota: Los métodos incorporados no aparecen en el diccionario de métodos remotos.

Devuelve un diccionario que asigna nombres de métodos a métodos remotos.

new_factory(args, **kwargs)

Crea una fábrica para un servicio. Es útil para pasar objetos de configuración o estado al servicio. Acepta palabras clave y parámetros arbitrarios; sin embargo, el servicio subyacente también debe aceptar otros parámetros en su constructor.

Argumentos
args
Argumentos para pasar al constructor del servicio.
**kwargs

Devuelve una función de fábrica que crea una instancia nueva y reenvía argumentos y palabras clave al constructor.

Métodos de instancia

Las instancias de servicio tienen los métodos siguientes:

initialize_request_state(request_state)
Argumentos:
request_state
Una instancia de RequestState.