Google Protocol RPC-Dienste werden entweder über einen Konstruktor oder über eine Factory erstellt, die keine Parameter akzeptiert. Einige Anwendungen müssen jedoch über mehrere Anforderungen einen bestimmten Zustand oder eine bestimmte Konfiguration an einen Dienst übergeben. Definieren Sie dazu Parameter für den Konstruktor des Dienstes und verwenden Sie die Klassenmethode new_factory(), um eine Factory zu erstellen, die Parameter an den Konstruktor überträgt. Beispiel:
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)
Die Übereinkunft mit einem Dienst-Handler sieht vor, dass für die Verarbeitung jeder Nutzeranforderung ein neues Dienstobjekt erstellt wird und dass bei der Erstellung keine Parameter verwendet werden. Die Factory erfüllt diese Bedingung:
new_instance = my_service_factory()
assert new_instance.state is global_state
Service
wird vom Modul protorpc.remote
bereitgestellt.
Klasseneigenschaften
Dienstinstanzen weisen eine einzige Eigenschaft auf:
- request_state
- Der mit dieser Dienstinstanz verknüpfte Anforderungszustand.
Klassenmethoden
Die Dienstklasse bietet folgende Klassenmethoden:
- all_remote_methods()
-
Ruft alle Remote-Methoden für eine Dienstklasse ab.
Hinweis: Integrierte Methoden werden nicht im Wörterbuch der Remotemethoden aufgeführt.
Gibt ein Wörterbuch zurück, das Methodennamen Remotemethoden zuordnet.
- new_factory(args, **kwargs)
-
Erstellt eine Factory für einen Dienst. Nützlich zur Weitergabe von Konfigurations- bzw. Zustandsobjekten an den Dienst. Nimmt beliebige Parameter und Keywords an, der zugrunde liegende Dienst darf jedoch keine weiteren Parameter in seinem Konstruktor annehmen.
Argumente- args
- An den Dienstkonstruktor weiterzugebende Argumente:
- **kwargs
Gibt eine Factory-Funktion zurück, die eine neue Instanz erstellt und Argumente und Keywords an den Konstruktor weiterleitet.
Instanzmethoden
Dienstinstanzen weisen die folgenden Methoden auf:
- initialize_request_state(request_state)
- Argumente:
- request_state
- Eine RequestState-Instanz.