Emulatore Cloud Datastore fornisce l'emulazione locale dell'ambiente Datastore di produzione. L'emulatore di Cloud Datastore viene progressivamente reso disponibile 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 dati locali tra i servizi in esecuzione nell'ambiente standard di App Engine e l'ambiente flessibile di App Engine.
Prima di iniziare
Scarica e installa il runtime Java (JRE) 11 o versioni successive.
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 dev_appserver. Se utilizzi l'emulatore di Cloud Datastore, dev_appserver visualizzerà:
... Using Cloud Datastore Emulator.
Puoi forzare dev_appserver a utilizzare l'emulatore Cloud Datastore impostando il flag --support_datastore_emulator
su true all'avvio di dev_appserver.py
:
python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py --support_datastore_emulator=[true|false] app.yaml
Sostituisci DEVAPPSERVER_ROOT con il percorso della cartella in cui
hai estratto la versione archiviata di devapp_server.py
. Per ulteriori informazioni sul download e sull'utilizzo della versione archiviata di dev_appserver.py
, consulta Utilizzare il server di sviluppo locale.
Utilizzo di dev_appserver con l'emulatore Datastore
Dev_appserver decide se avviare l'emulatore in base alla variabile di ambiente DATASTORE_EMULATOR_HOST
.
Se questa variabile di ambiente esiste, dev_appserver comunica con un processo emulatore esistente in esecuzione su
DATASTORE_EMULATOR_HOST
.Se questa variabile di ambiente non esiste, dev_appserver avvia un nuovo processo di emulatore. Puoi specificare la porta per l'emulatore Datastore impostando
--datastore_emulator_port
all'avvio di dev_appserver.py.
Modifiche al funzionamento
Conversione del formato dei dati locali
Attualmente, l'emulatore Datastore locale archivia i dati inqlite3, mentre l'emulatore Cloud Datastore archivia i dati come oggetti Java.
Quando dev_appserver viene avviato con i dati Squarespace3 legacy, i dati vengono convertiti in oggetti Java. Il backup dei dati originali viene eseguito con il nome file {original-data-filename}.sqlitestub.
Posizione file di dati locali
Il file di dati locali può essere specificato con il flag --datastore_path
.
Quando dev_appserver avvia l'emulatore, la sua posizione rimane invariata.
Quando dev_appserver utilizza l'emulatore di Cloud Datastore esistente, questo flag verrà ignorato a favore dell'impostazione dell'emulatore.
Index.yaml locale
Un index.yaml vuoto verrà considerato non valido. La syntax di index.yaml è il formato YAML. Il file index.yaml ha un singolo elemento elenco denominato indici.
Quando dev_appsever avvia l'emulatore, index.yaml rimane nella directory del progetto dell'applicazione.
Quando dev_appserver utilizza l'emulatore di Cloud Datastore esistente, index.yaml verrà gestito da questo emulatore.
Le altre funzionalità per il server datastore locale rimarranno invariate.
Risoluzione dei problemi
Recupero dell'output dell'emulatore
Per impostazione predefinita, dev_appserver esegue l'emulatore Datastore in modalità silenziosa. Per visualizzare l'output dell'emulatore di Datastore, esegui dev_appserver con --dev_appserver_log_level=debug
.
Importazione gRPC non riuscita
dev_appserver utilizza gRPC per comunicare con l'emulatore di Cloud Datastore. gcloud CLI pacchettizza gRPC, ma la versione in pacchetto non è compatibile con alcuni sistemi operativi, causando errori di importazione.
Per risolvere gli errori di importazione, puoi installare gRPC separatamente utilizzando pip
con gcloud CLI 219.0.0 o versioni successive:
pip install grpcio