O emulador do Cloud Datastore fornece a emulação local do ambiente de produção do Datastore. O emulador do Cloud Datastore está sendo implementado progressivamente como a implementação padrão do Datastore para o dev_appserver.
Benefícios de migrar para o emulador do Datastore
O emulador do Datastore pode ser compartilhado entre as bibliotecas de cliente de ambiente padrão do App Engine, como DB e NDB, e as bibliotecas de cliente do Cloud Datastore.
É possível usar o emulador do Datastore para compartilhar 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
Faça o download e instale o ambiente de execução Java (JRE) versão 11 ou posterior.
Execute dev_appserver a partir do diretório
google-cloud-sdk/bin
.
Como escolher o ambiente de emulação
O emulador do Cloud Datastore é o emulador padrão para uma parte dos usuários do dev_appserver. Se você estiver usando o emulador do Cloud Datastore, o dev_appserver exibirá:
... Using Cloud Datastore Emulator.
É possível forçar o dev_appserver a usar o emulador do Cloud Datastore definindo a sinalização --support_datastore_emulator
como verdadeira ao iniciar 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 em que você
extrai a versão arquivada de devapp_server.py
. Para mais informações sobre
como fazer o download e usar a versão arquivada de dev_appserver.py
, consulte Como usar o servidor de desenvolvimento local.
Como usar o dev_appserver com o emulador do Datastore
O dev_appserver inicia ou não o emulador com base na variável de ambiente DATASTORE_EMULATOR_HOST
.
Quando essa variável de ambiente existe, o dev_appserver se comunica com um processo emulador atual em execução no
DATASTORE_EMULATOR_HOST
.Quando essa variável de ambiente não existe, o dev_appserver inicia um novo processo emulador. É possível especificar a porta para o emulador do Datastore definindo o
--datastore_emulator_port
ao iniciar o dev_appserver.py.
Alterações de comportamento
Conversão de formato de dados locais
Atualmente, o emulador local do Datastore armazena dados em sqlite3, enquanto o emulador do Cloud Datastore armazena dados como objetos Java.
Quando o dev_appserver é iniciado com dados sqlite3 legados, os dados serão convertidos em objetos Java. Os dados originais são armazenados em backup com o nome de arquivo {original-data-filename} .sqlitestub.
Localização do arquivo de dados locais
O arquivo de dados locais pode ser especificado com a sinalização --datastore_path
.
Quando o dev_appserver inicia o emulador, a localização permanece inalterada.
Quando o dev_appserver usa o emulador atual do Cloud Datastore, o sinalizador é ignorado para a configuração do emulador.
index.yaml local
Um index.yaml vazio será considerado inválido. A sintaxe do index.yaml é o formato YAML. O arquivo index.yaml tem um único elemento de lista denominado indexes.
Quando o dev_appsever inicia o emulador, o index.yaml permanece no diretório do projeto do aplicativo.
Quando o dev_appserver usa o emulador atual do Cloud Datastore, o index.yaml é gerenciado pelo emulador.
Outros recursos do servidor local do datastore permanecem inalterados.
Solução de problemas
Como receber a saída do emulador
Por padrão, o dev_appserver executa o emulador do Datastore no modo silencioso. Para ver a
saída do emulador do Datastore, execute dev_appserver com
--dev_appserver_log_level=debug
.
Falha nas importações de gRPC
O dev_appserver usa o gRPC para se comunicar com o emulador do Cloud Datastore. O gcloud CLI empacota o gRPC, mas a versão empacotada é incompatível com alguns sistemas operacionais, o que causa falhas de importação.
Para corrigir falhas de importação, instale o gRPC separadamente
usando pip
com a CLI gcloud 219.0.0 ou posterior:
pip install grpcio