Como implantar um aplicativo do Python

Implante o aplicativo para fazer upload dele e executá-lo no App Engine. Ao implantar aplicativos, é possível criar versões deles e dos serviços correspondentes no App Engine. Podem ser implantados aplicativos inteiros, inclusive todos os arquivos de código-fonte e configuração. Além disso, é possível implantar e atualizar versões individuais ou arquivos de configuração.

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

Antes de começar

Para implantar o aplicativo:

Como instalar a ferramenta de linha de comando gcloud

Para implantar o aplicativo com a ferramenta da gcloud, você precisa fazer o download, instalar e inicializar o SDK do Cloud.

Fazer o download do SDK

Se a ferramenta da gcloud já estiver instalada, e você quiser configurá-la para usar um ID de projeto do GCP diferente do inicializado, consulte Como gerenciar as configurações do SDK do Cloud.

Usar um proxy

Caso esteja executando o comando de implantação de um sistema que usa proxy HTTP ou HTTPS, é preciso configurar a ferramenta para que possa se comunicar através do proxy.

gcloud

Execute os seguintes comandos para configurar a ferramenta gcloud :

gcloud config set proxy/type [PROXY_TYPE]
gcloud config set proxy/address [PROXY_ADDRESS]
gcloud config set proxy/port [PROXY_PORT]

Defina também um username e password para o proxy. Para mais informações, veja gcloud config.

appcfg

Defina a variável de ambiente que corresponde ao proxy:

Mac/Linux
export HTTP_PROXY="http://cache.example.com:3128"
export HTTPS_PROXY="http://cache.example.com:3128"
Windows
set HTTP_PROXY=http://cache.example.com:3128
set HTTPS_PROXY=http://cache.example.com:3128

Como implantar um aplicativo

Para implantar o aplicativo no App Engine, use o comando gcloud app deploy no local em que estão os arquivos de configuração. Por exemplo, app.yaml.

Como escolher IDs de versão únicos

Para instâncias com escalonamento manual, o código da versão deve começar com uma letra para distinguir dos códigos de instância numéricos. Isso garante que as solicitações sejam encaminhadas para o destino correto e evita a ambiguidade com padrões de URL como 123.my-service.appspot.com, que podem ser interpretados de duas maneiras:

  • Se a versão 123 existir, a solicitação será encaminhada para a versão 123 do serviço my-service.
  • Se a versão 123 não existir, a solicitação será encaminhada para o código da instância 123, onde as versões do serviço my-service estão sendo executadas.

É possível nomear as próprias versões como quiser no caso de instâncias configuradas para escalonamento automático ou básico, porque a segmentação dessas instâncias não está disponível.

gcloud

gcloud app deploy [YOUR_DEPLOYMENTS]

[YOUR_DEPLOYMENTS] é um ou mais caminhos e nomes do arquivo de configuração. Separe cada arquivo de configuração especificado usando um espaço em branco. Por padrão, o app.yaml é implantado quando nenhum arquivo de configuração é especificado.

Sinalizações opcionais:

  • Inclua a sinalização --version para especificar um ID de versão personalizado. Caso contrário, um ID será gerado para você.
  • Para implantar o aplicativo sem direcionar automaticamente todo o tráfego para essa versão, inclua a sinalização --no-promote.
  • Inclua a sinalização --project para especificar um código do projeto do GCP como alternativa ao código definido como padrão na ferramenta gcloud.

Exemplos:

gcloud app deploy
gcloud app deploy app.yaml dos.yaml index.yaml
gcloud app deploy --version [YOUR_VERSION_ID] --no-promote --project [YOUR_PROJECT_ID]

Por padrão, cada versão que você implanta é automaticamente configurada para receber todo o tráfego. Para opções de configuração, veja a sinalização --promote na referência de gcloud app deploy (link em inglês).

Dica: execute gcloud help na linha de comando para receber uma lista completa de argumentos e sinalizações.

appcfg

Depois de instalar o App Engine SDK original para Python 2, execute o comando a seguir:

appcfg.py -A [YOUR_PROJECT_ID] -V [YOUR_VERSION_ID] update [YOUR_APP_DIR]

Por padrão, a versão inicial implantada em um serviço é automaticamente configurada para receber 100% do tráfego. No entanto, todas as versões implantadas posteriormente no mesmo serviço precisam ser manualmente configuradas, caso contrário, não receberão tráfego.

Implantar vários aplicativos de serviços

Quando o aplicativo é fatorado em vários serviços, é possível implantar e atualizar serviços segmentados individualmente ou todos os serviços simultaneamente. A implantação de atualizações de serviços pode incluir atualização de arquivos de configuração individuais ou atualização do código-fonte nas versões correspondentes.

Por exemplo, podem ser implantadas e criadas duas versões no App Engine, sendo que cada versão é executada no próprio serviço. A primeira versão serve como serviço de front-end e a outra como back-end do aplicativo. Em seguida, podem ser implantados arquivos de configuração individuais para atualizar apenas as configurações de um serviço. Também é possível implantar uma nova versão em um serviço para atualizar o código-fonte do front-end, back-end ou ambos simultaneamente.

Requisitos para vários serviços

Use os mesmos comandos para implantar e atualizar os diversos serviços que compõem o aplicativo com os requisitos a seguir:

  • Primeiro, implante uma versão do app no serviço default antes de criar e implantar os serviços posteriores.

  • Especifique o ID do serviço no arquivo de configuração app.yaml da versão correspondente. Para fazer isso, inclua a definição de elemento service: [YOUR_SERVICE_ID] 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.

  • Especifique todos os arquivos de configuração app.yaml correspondentes no comando de implantação para implantar vários serviços simultaneamente.

Para implantar vários serviços

No diretório raiz do aplicativo em que os arquivos de configuração estão localizados, execute o comando de implantação e especifique os caminhos e os nomes de arquivos relacionados para cada arquivo app.yaml do serviço.

gcloud

gcloud app deploy [DEPLOYMENTS]

appcfg

appcfg.py update [DEPLOYMENTS]

Em que [DEPLOYMENTS] é o caminho e nome de um ou mais arquivos de configuração separados por um espaço.

Exemplo

gcloud

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

appcfg

appcfg.py update main/app.yaml service1/app.yaml service2/app.yaml

Você receberá a confirmação na linha de comando assim que cada serviço for implantado com sucesso.

Como atualizar índices

Para criar ou atualizar os índices usados pelos apps, faça upload do arquivo de configuração index.yaml no Cloud Datastore. Os índices que ainda não existem serão criados após o upload do arquivo de configuração.

Levará algum tempo até que o Cloud Datastore crie todos os índices. Portanto, eles não estarão imediatamente disponíveis no App Engine. Se o aplicativo já estiver configurado para receber tráfego, podem ocorrer exceções nas consultas que necessitem de um índice que ainda está em processo de criação.

Para evitar exceções, é preciso aguardar a criação de todos os índices. Por exemplo:

  • Faça o upload do arquivo de configuração index.yaml no Cloud Datastore antes de implantar a própria versão.

    1. Faça o upload do arquivo index.yaml no Cloud Datastore:

      appcfg
      appcfg.py -A [YOUR_PROJECT_ID] -V [YOUR_VERSION_ID] update_indexes [YOUR_APP_DIR]

    2. Use o Console do GCP para monitorar o status de todos os índices:

      Acessar a página do Datastore

    3. Após a criação de todos os índices, implante a nova versão no App Engine.

  • Crie os índices antes de migrar ou dividir o tráfego para a versão:

    1. Implante a nova versão sem direcionar o tráfego para ela:
      gcloud
      Você precisa especificar os arquivos app.yaml e index.yaml e também incluir o sinalizador --no-promote para que nenhum tráfego seja direcionado para a versão:
      gcloud app deploy app.yaml index.yaml --no-promote
      appcfg
      appcfg.py -A [YOUR_PROJECT_ID] -V [YOUR_VERSION_ID] update [YOUR_APP_DIR]
    2. Use o Console do GCP para monitorar o status de todos os índices:

      Acessar a página do Datastore

    3. Após a criação de todos os índices, use o Console do GCP para migrar ou dividir o tráfego para a versão:

      Acessar a página Versões

Para mais informações sobre índices, consulte Como configurar índices do Datastore.

Resolver problemas

Estas são mensagens de erro comuns que você pode encontrar:

PERMISSION_DENIED: Operation not allowed
The "appengine.applications.create" permission is required.
Caso o aplicativo obrigatório do App Engine não esteja incluído no projeto do GCP, o comando gcloud app deploy falhará ao tentar executar o comando gcloud app create. Somente contas com o papel proprietário têm as permissões necessárias para criar aplicativos do App Engine.
Command not found

Se você não criou links simbólicos para as ferramentas appcfg.py ou dev_appserver.sh, quando instalou o SDK do App Engine (obsoleto), talvez seja necessário especificar o caminho completo do diretório para executá-las. Por exemplo, [PATH_TO_APP_ENGINE_SDK]/appcfg.py ou [PATH_TO_CLOUD_SDK]/bin/dev_appserver.py.

Observação: para usar o appcfg.py, faça o download e instale o SDK original do App Engine para Python 2.

Import Error

Se você instalou o SDK original do App Engine e o do Cloud, as entradas em PATH poderão entrar em conflito e causar erros de importação. Se você recebeu mensagens de erro ao executar comandos do SDK do Cloud, tente usar o SDK original do App Engine explicitamente. Antecipe a entrada do SDK original do App Engine no seu PATH para que esses comandos tenham prioridade. Ou então, execute o comando especificando o caminho completo do diretório: [PATH_TO_APP_ENGINE_SDK]/dev_appserver.py.
Dica: no Linux ou no Mac, você pode executar o which dev_appserver.py para determinar qual SDK é o primeiro no PATH.

[400] The first service (module) you upload to a new application must be the 'default' service (module)

Antes de implantar e criar vários serviços do aplicativo, é preciso implantar e criar o serviço default. Para detalhes sobre como implantar uma versão no serviço default, consulte Como implantar vários aplicativos de serviços.

Too Many Versions (403)

O App Engine tem um número limitado de versões implantadas do aplicativo. Esse número é diferente para aplicativos gratuitos e aplicativos implantados. É possível usar o Console do GCP para excluir uma versão anterior e enviar o código mais recente.

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Ambiente padrão do App Engine para Python 2