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.