L'emulatore Cloud Datastore fornisce l'emulazione locale dell'ambiente Datastore di produzione. Cloud Datastore Emullator è in fase di implementazione progressiva come implementazione predefinita di Datastore per dev_appserver.
Vantaggi della migrazione all'emulatore Datastore
L'emulatore Datastore può essere condiviso tra le librerie client dell'ambiente standard di App Engine come DB e NDB e le librerie client di Cloud Datastore.
Puoi utilizzare l'emulatore Datastore per condividere i dati locali tra i servizi in esecuzione nell'ambiente standard di App Engine e nell'ambiente flessibile di App Engine.
Prima di iniziare
Scarica e installa il runtime Java (JRE) versione 8 o successiva.
Esegui dev_appserver dalla directory
google-cloud-sdk/bin
.
Scelta dell'ambiente di emulazione
L'emulatore Cloud Datastore è l'emulatore predefinito per una parte degli utenti di dev_appserver. Se utilizzi l'emulatore Cloud Datastore, dev_appserver mostrerà:
... Using Cloud Datastore Emulator.
Puoi forzare dev_appserver a usare l'emulatore Cloud Datastore impostando il flag&'--support_datastore_emulator' su true all'avvio di dev_appserver:
dev_appserver.py --support_datastore_emulator=[true|false] app.yaml
Utilizzo di dev_appserver con l'emulatore Datastore
Dev_appserver decide se avviare l'emulatore in base alla variabile di ambiente DATASTORE_EMULATOR_HOST
.
Quando esiste questa variabile di ambiente, dev_appserver comunica a un processo emulatore esistente in esecuzione su
DATASTORE_EMULATOR_HOST
.Quando questa variabile di ambiente non esiste, dev_appserver avvia un nuovo processo emulatore. Puoi specificare la porta dell'emulatore Datastore impostando l'elemento
--datastore_emulator_port
all'avvio di dev_appserver.py.
Modifiche al funzionamento
Conversione in formato dati locale
Attualmente, l'emulatore Datastore locale archivia i dati in SQLlite3, mentre l'emulatore Cloud Datastore archivia i dati come oggetti Java.
Quando dev_appserver viene avviato con i datiqlite3 legacy, i dati vengono convertiti in oggetti Java. Il backup dei dati originali viene eseguito con il nome file {original-data-filename}.sqlitestub.
Posizione del file di dati locali
Il file di dati locale può essere specificato con il flag --datastore_path
.
Quando dev_appserver avvia l'emulatore, la posizione rimane invariata.
Quando dev_appserver utilizza l'emulatore Cloud Datastore, questo flag verrà ignorato a favore dell'impostazione dell'emulatore.
Indice locale.yaml
Un file index.yaml vuoto verrà considerato non valido. La sintassi di index.yaml è il formato YAML. Il file index.yaml ha un singolo elemento di elenco chiamato indici.
Quando dev_appsever avvia l'emulatore, index.yaml rimarrà nella directory del progetto dell'applicazione.
Quando dev_appserver utilizza l'emulatore Cloud Datastore esistente, index.yaml verrà gestito da tale emulatore.
Altre funzionalità per il server datastore locale rimangono invariate.
Risolvere i problemi
Recupero dell'output emulatore
Per impostazione predefinita, dev_appserver esegue Datastore Emulator in modalità silenziosa. Per visualizzare
l'output di Datastore Emulator, esegui dev_appserver con
--dev_appserver_log_level=debug
.
Non vengono importate gRPC
Il server dev_appserver utilizza gRPC per comunicare con l'emulatore Cloud Datastore. Il pacchetto dell'interfaccia a riga di comando gcloud gRPC, tuttavia, è incompatibile con alcuni sistemi operativi e ciò causa errori di importazione.
Per correggere gli errori di importazione, puoi installare gRPC separatamente utilizzando pip
con
l'interfaccia a riga di comando gcloud 219.0.0 o successiva:
pip install grpcio