Migrazione all'emulatore di Cloud Datastore

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

  1. Scarica e installa il runtime Java (JRE) 11 o versioni successive.

  2. 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