Como usar o servidor de desenvolvimento local

O SDK do Cloud e o SDK do App Engine para Python 2 incluem um servidor de desenvolvimento local (dev_appserver.py) que pode ser executado localmente para simular o aplicativo em execução no App Engine de produção. O ambiente simulado reforça algumas restrições de sandbox, como funções de sistema restrito e importações de módulo do Python 2, mas não outras, como intervalos de solicitação 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.

Como executar o servidor de desenvolvimento local

Depois de criar o arquivo de configuração app.yaml para um aplicativo, inicie o servidor de desenvolvimento local com o comando dev_appserver.py para executar o aplicativo localmente.

Para iniciar o servidor de desenvolvimento local:

  1. Execute o comando dev_appserver.py da seguinte forma no diretório que contém o arquivo de configuração app.yaml do seu aplicativo:

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

    dev_appserver.py [PATH_TO_YOUR_APP]

    Se preferir, você pode informar o arquivo de configuração de um serviço específico, por exemplo:

    dev_appserver.py app.yaml

    Para alterar a porta, inclua a opção --port:

    dev_appserver.py --port=9999 [PATH_TO_YOUR_APP]

    O dev_appserver.py não funciona?

    Para saber mais sobre as opções do comando dev_appserver.py, consulte Opções do servidor de desenvolvimento local.

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

    Se especificou uma porta personalizada com a opção --port, lembre-se de abrir essa porta no seu navegador.

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

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

Como especificar IDs do aplicativo

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

Como detectar o ambiente de tempo de execução do aplicativo

Para determinar se o código está sendo executado no servidor de desenvolvimento de produção ou local, verifique a variável de ambiente SERVER_SOFTWARE:

if os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine/'):
  # Production
else:
  # Local development server

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 Cloud Datastore e Como configurar índices do Datastore.

Como navegar no 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 local do Datastore.

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

Para o App Engine de produção, defina o Datastore para gerar automaticamente códigos da entidade.

Embora as políticas de atribuição de códigos automáticos 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 códigos automática para o servidor local.

Para especificar a política de atribuição de códigos automática, use a opção --auto_id_policy:

dev_appserver.py --auto_id_policy=sequential

em que --auto_id_policy pode ser um dos seguintes itens:

  • scattered (padrão): os códigos 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 códigos são atribuídos com base na sequência de números inteiros consecutivos.

Como limpar o Datastore local

Para limpar o armazenamento de dados local de um aplicativo, invoque o servidor de desenvolvimento local da seguinte forma:

dev_appserver.py --clear_datastore=yes app.yaml

Como alterar a localização do Datastore local

Para alterar a localização usada para o arquivo de armazenamento de dados, use a opção --datastore_path:

dev_appserver.py --datastore_path=/tmp/myapp_datastore app.yaml

Como 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 users.create_login_url e users.create_logout_url retornam URLs para /_ah/login e /_ah/logout no servidor local.

Como 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 de e-mail com um servidor SMTP, chame dev_appserver.py da seguinte maneira:

dev_appserver.py --smtp_host=smtp.example.com --smtp_port=25 \
    --smtp_user=ajohnson --smtp_password=k1tt3ns [PATH_TO_YOUR_APP]

em que você configura as opções --smtp_host, --smtp_port, --smtp_user e --smtp_password com seus próprios valores.

Como usar o Sendmail

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

dev_appserver.py --enable_sendmail=yes [PATH_TO_YOUR_APP]

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

Como 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.

Como usar o console interativo

Com o console interativo, os desenvolvedores podem inserir um código Python arbitrário em um formulário da Web e o executem dentro do ambiente do aplicativo. Isso fornece o mesmo acesso ao ambiente e aos serviços do aplicativo que um arquivo .py no próprio aplicativo.

Para usar o console interativo:

  1. Inicie o servidor de desenvolvimento.

  2. Acesse o console interativo no console de desenvolvimento local. O URL é http://localhost:8000/console.

  3. Insira qualquer código do Python que você queira na área de texto e envie o formulário para executá-lo. Por exemplo, o seguinte código adicionará uma entidade do Datastore chamada Greeting com conteúdo de texto de Hello:

      from google.appengine.ext import ndb
      class Greeting(ndb.Model):
        content = ndb.TextProperty()
    
      e = Greeting(content="Hello")
      e.put()
    

Como depurar com PDB

Para usar o depurador PDB do Python:

  1. Adicione esta linha ao código:

    import pdb; pdb.set_trace();
    

    dev_appserver será detalhado neste ponto e ficará em PDB REPL, permitindo depurar o código a partir da linha de comando.

  2. Se o aplicativo fizer várias solicitações simultâneas que invocam pdb.set_trace(), várias sessões de depuração começarão simultaneamente, cada uma enviando a saída para STDOUT. Para evitar isso, serialize as solicitações desativando o suporte multi-threading e multiprocessamento de dev_appserver da seguinte forma:

    1. Desative multi-threading para:

      • todos os serviços que usam a sinalização --threadsafe_override=false;
      • um serviço que usa a sinalização --threadsafe_override=<SERVICENAME>:false;
      • vários serviços que usam a sinalização --threadsafe_override=<SERVICE1NAME>:false,<SERVICE2NAME>:false.
      1. Desative multiprocessamento para:
        • todos os serviços que usam a sinalização --max_module_instances=1;
        • um serviço que usa a sinalização --max_module_instances=<SERVICENAME>:1;
        • vários serviços que usam a sinalização --max_module_instances=<SERVICE1NAME>:1,<SERVICE2NAME>:1.
Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Ambiente padrão do App Engine para Python 2