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.