O Python 2.7 já está disponível para todos os usuários.

Como testar e implantar seu aplicativo

ID da região

O REGION_ID é um código abreviado que o Google atribui com base na região que você selecionou ao criar o aplicativo. O código não corresponde a um país ou estado, ainda que alguns IDs de região sejam semelhantes aos códigos de país e estado geralmente usados. A inclusão de REGION_ID.r em URLs do App Engine é opcional para aplicativos atuais. Em breve, será necessária para todos os aplicativos novos.

Para garantir uma transição tranquila, estamos atualizando o App Engine gradativamente para usar IDs de região. Se ainda não tivermos atualizado seu projeto do Google Cloud, você não verá um ID de região para o aplicativo. Como o ID é opcional para os aplicativos atuais, não será necessário atualizar os URLs nem fazer outras alterações quando o ID de região estiver disponível para os aplicativos atuais.

Saiba mais sobre IDs de região.

Saiba como executar o aplicativo localmente, implantá-lo e testá-lo no App Engine.

Como executar no local

Para testar a funcionalidade do seu aplicativo antes de implantá-lo, execute-o no ambiente local com as ferramentas de desenvolvimento que você costuma usar. Recomendamos que você use ferramentas padrão do Python, como o virtualenv para criar ambientes isolados e o pytest para executar testes de unidade e testes de integração, em vez de depender do dev_appserver, o servidor de desenvolvimento local fornecido com o SDK do Google Cloud.

Por exemplo, normalmente você pode executar um aplicativo Flask com o servidor de desenvolvimento do Flask usando:

python main.py

Os aplicativos Django podem ser iniciados usando-se:

python manage.py runserver

Para simular um ambiente de produção do App Engine, é possível executar o servidor de interface de gateway do servidor da Web (WSGI, na sigla em inglês) completo localmente. Para isso, use o mesmo comando especificado como entrypoint no app.yaml. Por exemplo:

gunicorn -b :$PORT main:app

Antes de implantar o aplicativo

Antes de implantar seu aplicativo:

Como implantar o aplicativo

Implantar o aplicativo no App Engine usando o comando gcloud app deploy.

Durante a implantação, o serviço Cloud Build cria uma imagem de contêiner do seu aplicativo para ser executada no ambiente padrão do App Engine. Saiba mais em Como gerenciar imagens de compilação.

Para implantar os aplicativos de maneira programática, use a API Admin.

Como implantar um serviço

Implante o aplicativo no App Engine implantando as versões dos serviços dele e os respectivos arquivos de configuração.

Para implantar uma versão do serviço do seu aplicativo, execute o comando a seguir no diretório em que o arquivo app.yaml do serviço está localizado:

gcloud app deploy

Se você não especificar algum arquivo com o comando, somente o arquivo app.yaml será implantado no diretório atual. Por padrão, o comando deploy gera um ID exclusivo para a versão implantada, implanta a versão no projeto do Google Cloud que você configurou para usar a ferramenta gcloud e roteia todo o tráfego para a nova versão.

É possível alterar o comportamento padrão do comando. Basta apontar arquivos específicos ou incluir outros parâmetros:

  • Para implantar os outros arquivos de configuração do serviço, é necessário direcionar e implantar cada um deles separadamente. Exemplo:
    gcloud app deploy cron.yaml
    gcloud app deploy dispatch.yaml
    gcloud app deploy index.yaml
    
  • Para especificar um ID de versão personalizado, use a sinalização --version.
  • Para impedir que o tráfego seja roteado automaticamente para a nova versão, use a sinalização --no-promote.
  • Para implantar em um projeto específico do Google Cloud, use a sinalização --project.

Por exemplo, para implantar o serviço definido pelo arquivo app.yaml em um projeto específico do Google Cloud, atribua a ele um ID de versão personalizado e impeça que o tráfego seja roteado para a nova versão:

gcloud app deploy --project PROJECT_ID --version VERSION_ID --no-promote

Para mais informações sobre esse comando, consulte a referência do gcloud app deploy.

Como implantar vários serviços

Use o mesmo comando para implantar ou atualizar os diversos serviços que compõem seu aplicativo.

Para implantar vários serviços, implante o arquivo app.yaml de cada serviço separadamente. É possível especificar vários arquivos com um único comando gcloud app deploy:

gcloud app deploy service1/app.yaml service2/app.yaml

Requisitos para implantar vários serviços

  • Primeiro é preciso implantar uma versão do seu aplicativo no serviço default para depois criar e implantar os serviços posteriores.
  • O ID de cada serviço precisa ser especificado nos arquivos de configuração app.yaml correspondentes. Para fazer isso, inclua a definição do elemento service em cada arquivo de configuração. Por padrão, a exclusão dessa definição de elemento do arquivo de configuração faz com que a versão seja implantada no serviço default.

Como ignorar arquivos

Use um arquivo .gcloudignore para especificar arquivos e diretórios que não serão enviados ao App Engine quando você implantar os serviços. Isso é útil para ignorar artefatos de compilação e outros arquivos que não precisam ser carregados com a implantação.

Como gerenciar imagens de versão

Cada vez que você implanta uma nova versão, uma imagem de contêiner é criada usando o serviço do Cloud Build. Essa imagem é executada no ambiente padrão do App Engine.

As imagens de contêiner criadas são armazenadas na pasta app-engine do Container Registry. É possível fazer o download dessas imagens para guardá-las ou executá-las em outro lugar. Depois da conclusão da implantação, o App Engine não precisa mais das imagens de contêiner. Como elas não são excluídas automaticamente, é possível excluir com segurança todas as imagens desnecessárias para evitar atingir sua cota de armazenamento. Para mais informações sobre como gerenciar imagens no Container Registry, consulte a documentação do Container Registry.

Como visualizar o aplicativo

Após a implantação do aplicativo no App Engine, execute o comando abaixo para iniciar o navegador e visualizá-lo em https://PROJECT_ID.REGION_ID.r.appspot.com:

gcloud app browse

Como testar no App Engine antes de transferir tráfego

Antes de configurar uma nova versão para receber tráfego, teste-a no App Engine. Por exemplo, para testar uma nova versão do serviço default, siga estas etapas:

  1. Implante a nova versão, mas impeça que o tráfego seja roteado automaticamente para ela:

    gcloud app deploy --no-promote

  2. Acesse a nova versão no URL a seguir:

    https://VERSION_ID-dot-default-dot-PROJECT_ID.REGION_ID.r.appspot.com

    Agora, é possível testar sua nova versão no ambiente de execução do App Engine. Além disso, é possível depurar o aplicativo visualizando os registros. Para mais informações, consulte Como gravar registros de aplicativos.

    As solicitações enviadas a https://PROJECT_ID.REGION_ID.r.appspot.com são roteadas para a versão previamente configurada para receber tráfego.

  3. Quando quiser enviar o tráfego para a nova versão, use o Console do Cloud para migrar o tráfego:

    Gerenciar versões

    Selecione a versão que você acabou de implantar e clique em Migrar tráfego.

Use o mesmo processo para testar novas versões de outros serviços substituindo default no URL pelo nome do serviço:

https://VERSION_ID-dot-SERVICE_ID-dot-PROJECT_ID.REGION_ID.r.appspot.com

Para mais informações sobre como apontar serviços e versões específicos, consulte Como as solicitações são encaminhadas.

Como usar o servidor de desenvolvimento local

O SDK do Google Cloud inclui um servidor de desenvolvimento local chamado dev_appserver que você pode executar localmente para simular o aplicativo em execução no App Engine de produção. Esse servidor de desenvolvimento simula parcialmente o ambiente em que seu aplicativo é executado.

Como executar o servidor de desenvolvimento local

Depois de criar o arquivo de configuração app.yaml para o aplicativo, inicie o servidor de desenvolvimento local com o comando dev_appserver.py para executá-lo localmente.

  1. Para iniciar o servidor de desenvolvimento local:

    Execute o comando dev_appserver.py na raiz do diretório do projeto. Especifique o ID do projeto e o caminho para o arquivo app.yaml:

    dev_appserver.py --application=PROJECT_ID app.yaml

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

    dev_appserver.py --application=PROJECT_ID app.yaml --port=9999

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

  2. Depois que o servidor de desenvolvimento local é iniciado, ele configura um ambiente de desenvolvimento que pré-instala as dependências encontradas no seu arquivo requirements.txt.

  3. O servidor de desenvolvimento local já está sendo executado e detectando solicitações. Visite http://localhost:8080/ no 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.

  4. Para parar o servidor local a partir da linha de comando, pressione Control-C no teclado.

Como detectar o ambiente 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 GAE_ENV:

if os.getenv('GAE_ENV', '').startswith('standard'):
  # Production in the standard environment
else:
  # Local execution.

Como usar o servidor de desenvolvimento local com os serviços do Google Cloud

É possível integrar o dev_appserver com outros componentes do Google Cloud.

Bibliotecas de cliente do Cloud

Muitas bibliotecas de cliente do Google Cloud dependem da presença da variável de ambiente GOOGLE_CLOUD_PROJECT, que precisa ser o ID do projeto do Cloud. Encontre o valor dele executando o comando gcloud config list project ou olhando a página do projeto no Console do Google Cloud.

Para garantir que essa variável de ambiente seja definida corretamente durante o desenvolvimento local, inicialize dev_appserver usando o parâmetro --application=PROJECT_ID, conforme mostrado no exemplo acima.

Emuladores do Cloud

É possível testar o aplicativo com emuladores para Cloud Datastore, Cloud Bigtable e Cloud Pub/Sub.

Como atualizar automaticamente as alterações em requirements.txt e app.yaml

O servidor de desenvolvimento local instala automaticamente as dependências encontradas no seu arquivo requirements.txt. O dev_appserver também permite que você teste a funcionalidade configurada por app.yaml. Por exemplo, é possível testar a capacidade do aplicativo de exibir arquivos estáticos. Quando o dev_appserver está em execução, qualquer alteração em requirements.txt e app.yaml reinicia o aplicativo automaticamente para refletir essas alterações. Isso pode resultar em um atraso temporário à medida que são feitos o download e a instalação das dependências.

Gerenciamento e roteamento de instâncias no servidor de desenvolvimento

Como descobrir endereços de instâncias

O servidor de desenvolvimento local cria todas as instâncias de escalonamento manuais na inicialização. As instâncias para serviços de escalonamento automáticos e básicos são gerenciadas dinamicamente. O servidor atribui uma porta a cada serviço, e os clientes podem depender do servidor para balancear a carga e selecionar automaticamente uma instância. As atribuições de porta para endereçar cada serviço são exibidas no streaming de mensagens de registro do servidor.

Aqui estão as portas de um app que define três serviços:

INFO Starting module "default" running at: http://localhost:8084
INFO Starting module "service1" running at: http://localhost:8082
INFO Starting module "service2" running at: http://localhost:8083

Quando você usa o endereço de um serviço, como http://localhost:8082/, o servidor cria ou seleciona uma instância do serviço e envia a solicitação para essa instância.

O servidor atribui portas exclusivas a cada instância de um serviço. Você pode usar o servidor admin para descobrir essas portas. Há uma porta exclusiva para o servidor de administrador, exibida no registro da mensagem:

INFO Starting admin server at: http://localhost:8000

Esse endereço leva você ao console do servidor de administrador. Clique em Instâncias para ver o estado dinâmico das instâncias do aplicativo.

Uma entrada separada aparece para cada instância manual e básica. Os números da instância são links com endereços de porta exclusivos para cada instância. Clique no link para enviar uma solicitação diretamente para essa instância.

Arquivos de expedição

Se o aplicativo incluir um arquivo dispatch.yaml, o stream de mensagens de registro incluirá uma porta do agente:

INFO Starting dispatcher running at: http://localhost:8080

As solicitações para essa porta são roteadas de acordo com as regras no arquivo de expedição. O servidor não é compatível com as regras do arquivo dispatch.yaml que incluem nomes de host (por exemplo, url: "customer1.myapp.com/*"). Regras com padrões de caminho relativo (url: "*/fun") funcionam. Por isso, use URLs como http://localhost/fun/mobile para acessar as instâncias. O servidor relata um erro no stream de registros se você tentar iniciar um aplicativo com um arquivo dispatch.yaml que contenha regras baseadas no host.