Pode usar o servidor de desenvolvimento local para simular a execução da sua aplicação do App Engine em produção, bem como usá-lo para aceder aos serviços incluídos do App Engine.
O ambiente simulado aplica algumas restrições da sandbox, como funções do sistema restritas e importações de módulos Go 1.11, mas não outras, como limites de tempo ou quotas de pedidos.
O servidor de desenvolvimento local também simula os serviços fornecidos pelas bibliotecas no SDK do App Engine, incluindo o armazenamento de dados, a cache de memória e as filas de tarefas, executando as respetivas tarefas localmente. Quando a sua aplicação está a ser executada no servidor de desenvolvimento, continua a poder fazer chamadas de API remotas para a infraestrutura de produção através dos pontos finais HTTP das APIs Google.
Antes de começar
Uma vez que o Go 1.11 atingiu o fim do apoio técnico, já não pode usar a versão mais recente do dev_appserver.py
para executar localmente as suas aplicações. Para transferir uma versão arquivada do devapp_server.py
, siga estes passos:
A partir do arquivo, transfira a pasta comprimida que contém o
dev_appserver.py
servidor para tempos de execução que atingiram o fim do apoio técnico.Extraia o conteúdo do diretório para o seu sistema de ficheiros local, como o diretório
/home
. Pode encontrar odev_appserver.py
no diretóriogoogle_appengine/
.
Configure o servidor de desenvolvimento local
Para executar a ferramenta de servidor de desenvolvimento local, tem de configurar o seguinte:
Verifique se instalou um intérprete do Python 2 da versão 2.7.12 ou posterior.
Defina a variável de ambiente
DEVAPPSERVER_ROOT
na sua shell para o caminho do seu intérprete do Python 2.
Execute o servidor de desenvolvimento local
Depois de configurar o servidor de desenvolvimento local e criar o ficheiro de configuração app.yaml
para a sua app, pode usar o comando dev_appserver.py
para executar a app localmente.
Para iniciar o servidor de desenvolvimento local:
No diretório que contém o ficheiro de configuração
app.yaml
, execute o comandodev_appserver.py
.dev_appserver.py
Especifique o caminho do diretório para a sua app, por exemplo:
python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py PATH_TO_YOUR_APP
Em alternativa, pode especificar o ficheiro de configuração de um serviço específico, por exemplo:
python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py app.yaml
Para alterar a porta, inclua a opção
--port
:python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py --port=9999 PATH_TO_YOUR_APP
Substitua DEVAPPSERVER_ROOT pelo caminho para a pasta onde extrai a versão arquivada de
devapp_server.py
.goapp serve
O comando
goapp serve
está incluído no SDK do App Engine original para Go e envolve a ferramenta Pythondev_appserver.py
subjacente. Para iniciar o servidor de desenvolvimento local, execute o seguinte comando:goapp serve
Para saber mais acerca das opções de comando
dev_appserver.py
, consulte as opções do servidor de desenvolvimento local.O servidor de programação local está agora em execução e a ouvir pedidos. Pode visitar http://localhost:8080/ no seu navegador de Internet para ver a app em ação.
Se especificou uma porta personalizada com a opção
--port
, lembre-se de abrir o seu navegador nessa porta.
Para parar o servidor local a partir da linha de comandos, prima o seguinte:
- macOS ou Linux: Control+C
- Windows: Control+Break
Especifique os IDs das aplicações
Para aceder ao ID da app no servidor local, por exemplo, para roubar um endereço de email, use a função
appengine.AppID
. Para obter o nome do anfitrião da app em execução, use a função
appengine.DefaultVersionHostname
.
Detetar o ambiente de tempo de execução da aplicação
Para determinar se o seu código está a ser executado em produção ou no servidor de desenvolvimento local, pode chamar o método IsDevAppServer()
. Quando esta opção está true
, o seu código está a ser executado no ambiente de desenvolvimento local. Caso contrário, está a ser executado em produção.
Usar o Datastore local
O servidor de desenvolvimento local simula o Datastore do App Engine através de um ficheiro local que persiste entre invocações do servidor local.
Para mais informações sobre os índices e o index.yaml
, consulte as páginas
Índices do armazenamento de dados
e Configuração
do índice do armazenamento de dados.
Explore o Armazenamento de dados local
Se a sua app tiver escrito dados no Datastore local através do servidor de desenvolvimento local, pode procurá-los na consola de desenvolvimento local.
Para procurar no Armazenamento de dados local:
Aceda ao Datastore Viewer na consola de desenvolvimento local. (O URL é
http://localhost:8000/datastore
.)Ver o conteúdo do seu Armazenamento de dados local.
Especifique a política de atribuição de IDs
Para a produção do App Engine, pode definir o Datastore para gerar automaticamente IDs de entidades.
Embora as políticas de atribuição automática de IDs para o servidor de produção sejam completamente diferentes das usadas pelo servidor de desenvolvimento, também pode definir a política de atribuição automática de IDs para o servidor local.
Para especificar a política de atribuição automática de IDs, use a opção --auto_id_policy
:
python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py --auto_id_policy=sequential
Substituição:
DEVAPPSERVER_ROOT com o caminho para a pasta onde extrai a versão arquivada do
devapp_server.py
.--auto_id_policy
com uma das seguintes opções:scattered
quando os IDs (predefinição) são atribuídos a partir de uma sequência não repetida de números inteiros distribuídos de forma aproximadamente uniforme.sequential
quando os IDs são atribuídos a partir da sequência de números inteiros consecutivos.
Limpe o Datastore local
Para limpar o armazenamento de dados local de uma aplicação, invoque o servidor de desenvolvimento local da seguinte forma:
python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py --clear_datastore=yes app.yaml
Substitua DEVAPPSERVER_ROOT pelo caminho para a pasta onde
extrai a versão arquivada de devapp_server.py
.
Altere a localização do Datastore local
Para alterar a localização usada para o ficheiro de repositório de dados, use a opção --datastore_path
:
python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py --datastore_path=/tmp/myapp_datastore app.yaml
Substitua DEVAPPSERVER_ROOT pelo caminho para a pasta onde
extrai a versão arquivada de devapp_server.py
.
Use o serviço Users
O App Engine fornece um
serviço de utilizadores para simplificar
a autenticação e a autorização da sua aplicação. O servidor de desenvolvimento local simula o comportamento das Contas Google com as suas próprias páginas de início e fim de sessão. Quando executadas no servidor de desenvolvimento local, as funções LoginURL
e LogoutURL
devolvem URLs para /_ah/login
e /_ah/logout
no servidor local.
Use o Mail
O servidor de desenvolvimento local pode enviar emails para chamadas ao serviço de email do App Engine através de um servidor SMTP ou de uma instalação local do Sendmail.
Usar o SMTP
Para ativar o suporte de correio com um servidor SMTP, invoque dev_appserver.py
da seguinte forma:
python2 [DEVAPPSERVER_ROOT]/google_appengine/dev_appserver.py --smtp_host=smtp.example.com --smtp_port=25 \
--smtp_user=ajohnson --smtp_password=k1tt3ns [PATH_TO_YOUR_APP]
Substituição:
[DEVAPPSERVER_ROOT]
com o caminho para a pasta onde extrai a versão arquivada dodevapp_server.py
.--smtp_host
,--smtp_port
,--smtp_user
e--smtp_password
opções com os seus próprios valores de configuração.
Usar o Sendmail
Para ativar o apoio técnico por email com o Sendmail, invoque dev_appserver.py
da seguinte forma:
python2 [DEVAPPSERVER_ROOT]/google_appengine/dev_appserver.py --enable_sendmail=yes [PATH_TO_YOUR_APP]
Substitua [DEVAPPSERVER_ROOT]
pelo caminho para a pasta onde
extraiu a versão arquivada de devapp_server.py
.
O servidor local usa o comando sendmail
para enviar mensagens de email com a configuração predefinida da sua instalação.
Use a obtenção de URLs
Quando a sua aplicação usa a API URL Fetch para fazer um pedido HTTP, o servidor de desenvolvimento local faz o pedido diretamente a partir do seu computador. O comportamento da obtenção de URLs no servidor local pode diferir do App Engine de produção se usar um servidor proxy para aceder a Websites.