O emulador do Armazenamento de dados do Cloud oferece uma emulação local do ambiente de produção do Armazenamento de dados. O emulador do Cloud Datastore está a ser implementado progressivamente como a implementação predefinida do Datastore para o dev_appserver.
Vantagens da migração para o Datastore Emulator
O emulador do Datastore pode ser partilhado entre as bibliotecas cliente do ambiente padrão do App Engine, como DB e NDB, e as bibliotecas cliente do Cloud Datastore.
Pode usar o emulador do Datastore para partilhar dados locais entre serviços em execução no ambiente padrão do App Engine e no ambiente flexível do App Engine.
Antes de começar
Transfira e instale a versão 11 ou superior do tempo de execução Java (JRE).
Execute o dev_appserver a partir do diretório
google-cloud-sdk/bin
.
Escolher o ambiente de emulação
O emulador do Cloud Datastore é o emulador predefinido para uma parte dos utilizadores do dev_appserver. Se estiver a usar o emulador do Cloud Datastore, o dev_appserver apresenta:
... Using Cloud Datastore Emulator.
Pode forçar o dev_appserver a usar o emulador do Cloud Datastore definindo a flag --support_datastore_emulator
como true quando iniciar o dev_appserver.py
:
python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py --support_datastore_emulator=[true|false] app.yaml
Substitua DEVAPPSERVER_ROOT pelo caminho para a pasta onde
extrai a versão arquivada de devapp_server.py
. Para mais informações sobre como transferir e usar a versão arquivada do dev_appserver.py
, consulte o artigo Usar o servidor de desenvolvimento local.
Usar o dev_appserver com o emulador do Datastore
O dev_appserver decide se deve iniciar o emulador com base na variável de ambiente DATASTORE_EMULATOR_HOST
.
Quando esta variável de ambiente existe, o dev_appserver comunica com um processo de emulador existente em execução no
DATASTORE_EMULATOR_HOST
.Quando esta variável de ambiente não existe, o dev_appserver inicia um novo processo do emulador. Pode especificar a porta para o emulador do Datastore definindo o
--datastore_emulator_port
quando iniciar o dev_appserver.py.
Alterações de comportamento
Conversão do formato de dados locais
Atualmente, o emulador do Armazenamento de dados local armazena dados em sqlite3, enquanto o emulador do Armazenamento de dados do Google Cloud armazena dados como objetos Java.
Quando o dev_appserver é iniciado com dados sqlite3 antigos, os dados são convertidos em objetos Java. Os dados originais são copiados com o nome de ficheiro {original-data-filename}.sqlitestub.
Localização do ficheiro de dados local
O ficheiro de dados local pode ser especificado com a flag --datastore_path
.
Quando o dev_appserver inicia o emulador, a localização permanece inalterada.
Quando o dev_appserver usa o Cloud Datastore Emulator existente, esta flag é ignorada em favor da definição do emulador.
Local index.yaml
Um ficheiro index.yaml vazio é considerado inválido. A sintaxe de index.yaml está no formato YAML. O ficheiro index.yaml tem um único elemento de lista denominado indexes.
Quando o dev_appserver inicia o emulador, o ficheiro index.yaml permanece no diretório do projeto da aplicação.
Quando o dev_appserver usa o emulador do Cloud Datastore existente, o index.yaml é gerido por esse emulador.
Outras funcionalidades do servidor de armazenamento de dados local permanecem inalteradas.
Resolução de problemas
Obter resultados do emulador
Por predefinição, o dev_appserver executa o Datastore Emulator no modo silencioso. Para ver o resultado do emulador do Datastore, execute o dev_appserver com --dev_appserver_log_level=debug
.
Falha nas importações de gRPC
O dev_appserver usa o gRPC para comunicar com o emulador do Cloud Datastore. No entanto, a CLI gcloud inclui o gRPC, mas a versão incluída é incompatível com alguns sistemas operativos, o que provoca falhas de importação.
Para corrigir falhas de importação, pode instalar o gRPC separadamente através do pip
com a
CLI gcloud 219.0.0 ou superior:
pip install grpcio