Clase de servicio

Los servicios de RPC de Protocol de Google se crean mediante un constructor o una fábrica que no toma ningún parámetro. Sin embargo, algunas aplicaciones necesitan pasar algún estado o configuración a algún 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 debe crear un nuevo objeto de servicios para procesar cada una de las solicitudes de usuario y que la construcción no precisa de parámetros. La fábrica cumple esta condición:

new_instance = my_service_factory()
assert new_instance.state is global_state

Service lo proporciona el módulo protorpc.remote.

Propiedades de clase

Los servicios crean una instancia de una propiedad:

request_state
Estado de la solicitud asociado a esta instancia de Service.

Métodos de clase

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

all_remote_methods()

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

Nota: Los métodos integrados 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 de estado al servicio. Acepta parámetros y palabras clave arbitrarias, aunque el servicio subyacente no debe aceptar otros parámetros en su constructor.

Argumentos
args
Argumentos que se van a transferir al constructor del servicio.
**kwargs

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

Métodos de instancia

Las instancias del servicio tienen los siguientes métodos:

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