I servizi RPC del protocollo Google vengono creati tramite un costruttore o una fabbrica che non accetta parametri. Tuttavia, alcune applicazioni devono trasferire uno stato o una configurazione a un servizio tra più richieste. A questo scopo, definisci i parametri al costruttore del servizio e utilizza il metodo della classe new_factory() per creare una fabbrica che trasmetterà i parametri al costruttore. Ad esempio:
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)
Il contratto con qualsiasi gestore di servizi prevede la creazione di un nuovo oggetto di servizio per gestire ogni richiesta dell'utente e che la costruzione non prende alcun parametro. La fabbrica soddisfa questa condizione:
new_instance = my_service_factory()
assert new_instance.state is global_state
Service
è fornito dal modulo protorpc.remote
.
Proprietà del corso
Le istanze di servizi di una proprietà:
- request_state
- Stato della richiesta associato a questa istanza di servizio.
Metodi di classe
La classe Service fornisce i seguenti metodi:
- all_remote_methods()
-
Recupera tutti i metodi remoti per una classe Service.
Nota: i metodi integrati non vengono visualizzati nel dizionario dei metodi remoti.
Restituisce un dizionario che mappa i nomi dei metodi a metodi remoti.
- new_factory(args, **kwargs)
-
Crea una fabbrica per un servizio. Utile per passare oggetti di configurazione o stato al servizio. Accetta parole chiave e parametri arbitrari, ma il servizio sottostante deve accettare anche altri parametri nel suo costruttore.
Argomenti- argomenti
- Argomenti da passare al costruttore del servizio.
- **kwargs
Restituisce una funzione di fabbrica che crea una nuova istanza e inoltra gli argomenti e le parole chiave al costruttore.
Metodi istanza
Le istanze di servizio hanno i seguenti metodi:
- initialize_request_state(request_state)
- Argomenti:
- request_state
- Un'istanza di RequestState.