O Python 2 não é mais compatível com a comunidade. Recomendamos que você migre aplicativos do Python 2 para o Python 3.

Como implantar um aplicativo em Python

Implante o aplicativo para fazer upload e executá-lo no App Engine. Ao implantar aplicativos, é possível criar versões deles e dos serviços correspondentes no App Engine. É possível implantar aplicativos inteiros, inclusive todos os arquivos de configuração e todo o código-fonte. 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.

Se você usar a ferramenta appcfg (hoje obsoleta) para implantar aplicativos, consulte a referência sobre appcfg para informações sobre como usá-la.

Antes de começar

Antes de implantar o aplicativo:

Como instalar a ferramenta de linha de comando gcloud

Para implantar o aplicativo com a ferramenta gcloud, é necessário fazer o download, instalar e inicializar o SDK do Cloud.

Fazer o download do SDK

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

Como usar um proxy

Se você estiver executando o comando de implantação de um sistema que usa proxy HTTP ou HTTPS, é necessário configurar a ferramenta para que ela se comunique por meio do proxy.

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]

Também é possível definir um username e um password para o proxy. Para mais informações, consulte gcloud config.

Como implantar um aplicativo

Para implantar o aplicativo no App Engine, use o comando gcloud app deploy de onde seus arquivos de configuração estiverem localizados, por exemplo, app.yaml.

Como escolher IDs de versão exclusivos

Para instâncias com escalonamento manual, o ID da versão começa com uma letra para distingui-las dos IDs de instância numéricos. Isso garante que as solicitações sejam roteadas para o destino correto e evita a ambiguidade com padrões de URL como 123-dot-my-service.[REGION_ID].r.appspot.com, que são interpretados de duas maneiras:

  • Se a versão 123 existir, a solicitação será roteada para a versão 123 do serviço my-service.
  • Se a versão 123 não existir, a solicitação será roteada para o ID de instância 123, onde as versões do serviço my-service estarão em execução.

Nomeie como quiser suas versões de instâncias configuradas para escalonamento automático ou básico, porque segmentar dessas instâncias não é compatível.

gcloud app deploy [CONFIGURATION_FILES]

Por padrão, o comando implanta o arquivo de configuração app.yaml do diretório atual. Se você for executar o comando de um diretório que não contenha o app.yaml do aplicativo ou se quiser implantar vários aplicativos, substitua [CONFIGURATION_FILES] pelo caminho para um ou mais arquivos de configuração. Use um único espaço em branco para separar os nomes dos caminhos.

Sinalizações opcionais:

  • --version: especifica um ID de versão personalizado. Por padrão, o App Engine gera um ID de versão.
  • --no-promote: implanta o aplicativo sem rotear todo o tráfego para essa versão automaticamente. Por padrão, cada versão que você implanta é automaticamente configurada para receber 100% do tráfego.
  • --project: especifica um ID do projeto do Cloud alternativo para o que você inicializou como padrão na ferramenta gcloud.

Para mais informações, consulte a referência sobre gcloud app deploy ou execute gcloud help na linha de comando.

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]

Se você implantar uma versão que especifica o mesmo ID de uma versão que já existe no App Engine, os arquivos que você implantar substituirão a versão existente. Isso será um problema se a versão estiver exibindo tráfego, porque talvez o tráfego para o aplicativo seja interrompido. Você pode evitar a interrupção do tráfego implantando a nova versão com um código de versão diferente. Depois, mude o tráfego para essa versão.

Como implantar vários aplicativos de serviços

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

Por exemplo, é possível implantar e criar duas versões no App Engine, sendo que cada uma será executada no próprio serviço. A primeira versão serve como o serviço de front-end, e a outra, como o back-end do seu aplicativo. Então, será possível implantar arquivos de configuração individuais para atualizar somente 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, do back-end ou de ambos ao mesmo tempo.

Requisitos para vários serviços

Use os mesmos comandos para implantar e atualizar os diversos serviços do aplicativo com os requisitos a seguir:

  • Primeiro, é necessário implantar uma versão do aplicativo no serviço default antes de criar e implantar os serviços subsequentes.

  • É necessário especificar o ID do serviço no arquivo de configuração app.yaml da versão correspondente. Para isso, inclua a definição do elemento service: [YOUR_SERVICE_ID] em cada arquivo de configuração. Por padrão, a exclusão da definição desse elemento do arquivo de configuração implanta a versão no serviço default.

  • É necessário especificar todos os arquivos de configuração app.yaml correspondentes no comando de implantação para implantar vários serviços ao mesmo tempo.

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 arquivo relativos a cada arquivo app.yaml do serviço.

gcloud app deploy [CONFIGURATION_FILES]

Em que [CONFIGURATION_FILES] é o caminho e o nome de um ou mais arquivos de configuração separados por um único espaço em branco.

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

Você receberá a verificação por meio da linha de comando assim que cada serviço for implantado com sucesso.

Como atualizar índices

Para criar ou atualizar os índices usados pelos aplicativos, faça upload do arquivo de configuração index.yaml no 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 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, é possível que ocorram exceções nas consultas que necessitarem de um índice que ainda estiver sendo criado.

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

  • Faça upload do arquivo de configuração index.yaml no Datastore antes de implantar a versão:

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

        <pre class="prettyprint lang-sh">gcloud datastore indexes create index.yaml</pre>
        For information, see the <a
        href="/sdk/gcloud/reference/datastore/"><code>gcloud
        datastore</code> reference</a>.
      
    2. Use o Console do Cloud para monitorar o status de todos os índices:

      Acessar a página 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 rotear o tráfego para ela: é necessário especificar os arquivos app.yaml e index.yaml e incluir a sinalização --no-promote para que nenhum tráfego seja roteado para a versão:
      gcloud app deploy app.yaml index.yaml --no-promote
    2. Use o Console do Cloud para monitorar o status de todos os índices:

      Acessar a página Datastore

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

      Acessar a página Versões

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

Resolver problemas

A seguir, há mensagens de erro comuns que você talvez encontre:

PERMISSION_DENIED: Operation not allowed
The "appengine.applications.create" permission is required.
Se o projeto do Cloud não incluir o aplicativo necessário do App Engine, é possível que o comando gcloud app deploy falhe ao tentar executar o comando gcloud app create. Somente contas com o papel de 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 dev_appserver.sh quando instalou o SDK do App Engine (obsoleto), talvez seja necessário especificar o caminho completo do diretório para executar a ferramenta. Por exemplo: [PATH_TO_CLOUD_SDK]/bin/dev_appserver.py.
Import Error
Se você instalou os SDKs originais do App Engine e do Cloud, as entradas para o PATH talvez entrem em conflito e causem erros de importação. Se você recebeu erros ao executar comandos do SDK do Cloud, use explicitamente o SDK do App Engine original. É possível mover a entrada do SDK original do App Engine para um período anterior no PATH. Assim, esses comandos terão prioridade. Como alternativa, é possível executar o comando especificando o caminho completo do diretório: [PATH_TO_APP_ENGINE_SDK]/dev_appserver.py.
[400] The first service (module) you upload to a new application must be the 'default' service (module)
Antes de implantar e criar os vários serviços do aplicativo, é necessário primeiro 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ço.
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. Use o Console do Cloud para excluir uma versão mais antiga e fazer upload do código mais recente.
Outro erro de implantação
Se a implantação falhar, verifique se a API Cloud Build está ativada no projeto. O App Engine ativa essa API automaticamente na primeira vez que você implantar um aplicativo, mas se alguém tiver desativado a API, as implantações falharão.

A seguir