Migrazione all'emulatore Cloud Datastore

Emulatore di Cloud Datastore fornisce l'emulazione locale dell'ambiente Datastore di produzione. Cloud Datastore L'emulatore verrà implementato progressivamente come Datastore predefinito per dev_appserver.

Vantaggi della migrazione all'emulatore Datastore

L'emulatore Datastore può essere condiviso tra lo standard di App Engine librerie client di ambiente come DB NDB e 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 completamente gestito di Google Cloud.

Prima di iniziare

  1. Scarica e installa il runtime Java (JRE) versione 11 o successiva.

  2. Esegui dev_appserver dalla directory google-cloud-sdk/bin.

Scelta dell'ambiente di emulazione

L'emulatore di Cloud Datastore è l'emulatore predefinito per una parte utenti dev_appserver. Se utilizzi l'emulatore Cloud Datastore, In dev_appserver verrà visualizzato:

... Using Cloud Datastore Emulator.

Puoi forzare dev_appserver a utilizzare l'emulatore Cloud Datastore impostando il parametro 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 estrai la versione archiviata di devapp_server.py. Per ulteriori informazioni scaricare e utilizzare la versione archiviata di dev_appserver.py, consulta Utilizzo del server di sviluppo locale.

Utilizzo di dev_appserver con l'emulatore Datastore

Dev_appserver decide se avviare l'emulatore in base all'ambiente la variabile DATASTORE_EMULATOR_HOST.

  • Se questa variabile di ambiente esiste, dev_appserver comunica processo dell'emulatore esistente in esecuzione su DATASTORE_EMULATOR_HOST.

  • Se questa variabile di ambiente non esiste, dev_appserver avvia una nuova dell'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 in sqlite3, mentre L'emulatore Cloud Datastore archivia i dati come oggetti Java.

Quando dev_appserver viene avviato con dati sqlite3 legacy, i dati saranno convertiti in oggetti Java. Viene eseguito il backup dei dati originali con il nome file {original-data-filename}.sqlitestub.

Posizione del file di dati locali

Il file di dati locali 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 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 di elenco chiamato indici.

  • Quando dev_appsever avvia l'emulatore, index.yaml rimane nella della directory del progetto dell'applicazione.

  • Quando dev_appserver utilizza l'emulatore Cloud Datastore esistente, index.yaml essere gestito dall'emulatore.

Altre funzionalità per il server datastore locale rimangono invariate.

Risoluzione dei problemi

Recupero dell'output dell'emulatore in corso...

Per impostazione predefinita, dev_appserver esegue l'emulatore Datastore in modalità silenziosa. Per vedere le dell'emulatore Datastore, esegui dev_appserver con --dev_appserver_log_level=debug.

Importazioni gRPC non riuscite

dev_appserver utilizza gRPC per comunicare all'emulatore di Cloud Datastore. i pacchetti gRPC gcloud CLI, ma la versione in pacchetto non è compatibile con alcuni sistemi operativi e ciò causa l'importazione errori.

Per correggere gli errori di importazione, puoi installare gRPC separatamente utilizzando pip con gcloud CLI 219.0.0 o versione successiva:

pip install grpcio