Como usar o servidor de desenvolvimento local

É possível usar o servidor de desenvolvimento local para simular a execução do aplicativo do App Engine na produção, bem como usá-lo para acessar serviços em pacote do App Engine.

O ambiente simulado impõe algumas restrições de sandbox, como funções de sistema restrito e importações de módulo do Go 1.11. No entanto, outros aspectos são liberados, como expiração de solicitações ou cotas.

O servidor de desenvolvimento local também simula os serviços fornecidos pelas bibliotecas no SDK do App Engine, incluindo Datastore, Memcache e filas de tarefas, por meio da execução local das respectivas tarefas. Quando o aplicativo está sendo executado no servidor de desenvolvimento, ainda é possível fazer chamadas de API remotas para a infraestrutura de produção usando os endpoints HTTP das APIs do Google.

Antes de começar

Como o Go 1.11 chegou ao fim do suporte, não é mais possível usar a versão mais recente do dev_appserver.py para executar localmente os aplicativos. Para fazer o download de uma versão arquivada de devapp_server.py, siga estas etapas:

  1. No arquivo, faça o download da pasta compactada que contém o servidor dev_appserver.py para ambientes de execução que atingiram o fim do suporte.

  2. Extraia o conteúdo do diretório para o sistema de arquivos local, como o diretório /home. É possível encontrar dev_appserver.py no diretório google_appengine/.

Configurar o servidor de desenvolvimento local

Para executar a ferramenta do servidor de desenvolvimento local, configure o seguinte:

  1. Verifique se você instalou um intérprete do Python 2 da versão 2.7.12 ou posterior.

  2. Defina a variável de ambiente DEVAPPSERVER_ROOT no shell como o caminho do interpretador do Python 2.

Executar o servidor de desenvolvimento local

Depois de configurar o servidor de desenvolvimento local e criar o arquivo de configuração app.yaml para seu app, use o comando dev_appserver.py para executar seu aplicativo localmente.

Para iniciar o servidor de desenvolvimento local:

  1. No diretório que contém o arquivo de configuração app.yaml, execute o comando dev_appserver.py.

    dev_appserver.py

    Especifique o caminho do diretório para seu aplicativo, por exemplo:

    python2 DEVAPPSERVER_ROOT/google_appengine/dev_appserver.py PATH_TO_YOUR_APP
    

    Se preferir, informe o arquivo 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 em que você extrai a versão arquivada de devapp_server.py.

    goapp serve

    O comando goapp serve está incluído no SDK original do App Engine para Go e envolve a ferramenta subjacente dev_appserver.py do Python. Para iniciar o servidor de desenvolvimento local, execute:

      goapp serve
    

    Saiba mais sobre as opções do comando dev_appserver.py em Opções do servidor de desenvolvimento local.

  2. O servidor de desenvolvimento local já está sendo executado e detectando solicitações. Acesse http://localhost:8080/ no seu navegador da Web para ver o aplicativo em ação.

    Caso tenha especificado uma porta personalizada com a opção --port, lembre-se de abrir essa porta no navegador.

Para parar o servidor local pela linha de comando, pressione:

  • macOS ou Linux: Control+C
  • Windows: Control+Break

Especificar IDs de aplicativo

Para acessar o ID do aplicativo no servidor local, por exemplo, para fazer o spoofing de um endereço de e-mail, use a função appengine.AppID. Para receber o nome do host do aplicativo em execução, use a função appengine.DefaultVersionHostname.

Como detectar o ambiente de execução do aplicativo

Para determinar se o código está sendo executado em produção ou no servidor de desenvolvimento local, chame o método IsDevAppServer(). Quando isso for true, seu código está sendo executado no ambiente de desenvolvimento local. Caso contrário, está sendo executado em produção.


package devserver

import (
	"fmt"
	"net/http"

	"google.golang.org/appengine"
)

func init() {
	http.HandleFunc("/", handler)
}

func handler(w http.ResponseWriter, r *http.Request) {
	fmt.Fprintf(w, "IsDevAppServer: %v", appengine.IsDevAppServer())
}

Como usar o Datastore local

O servidor de desenvolvimento local simula o armazenamento de dados do App Engine usando um arquivo local que persiste entre invocações do servidor local.

Para mais informações sobre índices e index.yaml, consulte as páginas Índices do Datastore e Configuração do índice do Datastore.

Navegar pelo Datastore local

Se seu aplicativo tiver gravado dados no seu Datastore local usando o servidor de desenvolvimento local, você pode navegar nele pelo console de desenvolvimento local.

Para navegar no Datastore local:

  1. Inicie o servidor de desenvolvimento.

  2. Acesse o Leitor do Datastore no console de desenvolvimento local. O URL é http://localhost:8000/datastore.

  3. Veja o conteúdo do Datastore local.

Especificar a política de alocação de códigos

Para o App Engine de produção, é possível configurar o Datastore para gerar IDs de entidade automaticamente.

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, é possível configurar a política de alocação de IDs automática 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

Substitua:

  • DEVAPPSERVER_ROOT pelo caminho para a pasta em que você extrai a versão arquivada de devapp_server.py.

  • --auto_id_policy por um destes procedimentos:

    • scattered scattered (padrão): os IDs são atribuídos com base em uma sequência não repetitiva de números inteiros distribuídos de maneira quase uniforme.
    • sequential: os IDs são atribuídos da sequência de números inteiros consecutivos.

Limpar o armazenamento de dados local

Para limpar o armazenamento de dados local de um aplicativo, 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 em que você extrai a versão arquivada de devapp_server.py.

Alterar o local do Datastore

Para alterar o local usado para o arquivo de armazenamento 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 em que você extrai a versão arquivada de devapp_server.py.

Usar o serviço Usuários

O App Engine fornece um Serviço usuários para simplificar a autenticação e autorização para seu aplicativo. O servidor de desenvolvimento local simula o comportamento das Contas do Google com as próprias páginas de login e logout. Durante a execução no servidor de desenvolvimento local, as funções LoginURL e LogoutURL retornam URLs para /_ah/login e /_ah/logout no servidor local.

Usar o E-mail

O servidor de desenvolvimento local pode enviar e-mails para chamadas do serviço de e-mail do App Engine usando um servidor SMTP ou uma instalação local do Sendmail.

Como usar SMTP

Para ativar o suporte a e-mail com um servidor SMTP, invoque dev_appserver.py da seguinte maneira:

   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]

Substitua:

  • [DEVAPPSERVER_ROOT] pelo caminho para a pasta em que você extrai a versão arquivada de devapp_server.py.
  • As opções --smtp_host, --smtp_port, --smtp_user e --smtp_password com seus próprios valores de configuração.

Como usar o Sendmail

Para ativar o suporte a e-mail com o Sendmail, invoque dev_appserver.py desta forma:

   python2 [DEVAPPSERVER_ROOT]/google_appengine/dev_appserver.py --enable_sendmail=yes [PATH_TO_YOUR_APP]

Substitua [DEVAPPSERVER_ROOT] pelo caminho para a pasta em que você extrai a versão arquivada de devapp_server.py.

O servidor local usará o comando sendmail para enviar mensagens de e-mail com a configuração padrão da instalação.

Usar a busca de URL

Quando o aplicativo usa a API de busca de URL para fazer uma solicitação HTTP, o servidor de desenvolvimento local efetua a solicitação diretamente do seu computador. O comportamento de busca de URL no servidor local pode ser diferente do App Engine de produção se você usar um servidor proxy para acessar sites.