Como implantar um aplicativo do Python

Implante o aplicativo para fazer upload e executar 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 Admin API.

Antes de começar

Para implantar o aplicativo:

Para implantar o aplicativo com a ferramenta gcloud, faça o download, instale e inicialize o Google Cloud SDK:

Faça o download do SDK

Caso tenha a ferramenta gcloud instalada e queira configurá-la para usar um código de projeto do GCP diferente do inicializado, consulte Como gerenciar configurações do Cloud SDK.

Como 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, execute o comando gcloud app deploy no diretório raiz do aplicativo em que os arquivos de configuração estão localizados, por exemplo, app.yaml.

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 código de versão personalizado. Caso contrário, um código será gerado para você.
  • Para implantar o aplicativo sem direcionar automaticamente todo o tráfego para essa versão, inclua o sinalizador --no-promote.
  • Inclua o sinalizador --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 100% do tráfego. Para opções de configuração, veja a sinalização --promote na referência de gcloud app deploy.

Dica: execute gcloud help na linha de comando para receber uma lista completa de argumentos e sinalizadores.

appcfg

Depois de instalar o App Engine SDK original para Python, execute o seguinte comando:

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

Por padrão, a versão implantada inicialmente em um serviço é automaticamente configurada para receber 100% de 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.

Como escolher códigos 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.

Você pode 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.

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

  • primeiramente, implante uma versão do aplicativo no serviço default antes de criar e implementar serviços posteriores.

  • Especifique o código 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, ao excluir essa definição de elemento do arquivo de configuração, você implanta a versão 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 onde 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]

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

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 pelo aplicativo, faça o 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, você precisa dar tempo para que todos os índices sejam criados. Veja os exemplos a seguir.

  • 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:

      gcloud
      gcloud datastore create-indexes index.yaml
      Para informações, consulte a referência do gcloud 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 própria 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.
Se o projeto do GCP não incluir o aplicativo obrigatório do App Engine, o comando gcloud app deploy poderá falhar 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 tiver criado links simbólicos para as ferramentas appcfg.py ou dev_appserver.py quando instalou o SDK, será necessário especificar o caminho completo do diretório para executar a ferramenta, 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.

Import Error

Se você instalou o Google Cloud SDK e o SDK original do App Engine, as entradas para o PATH podem conflitar e causar erros de importação. Se você recebeu mensagens de erro ao executar comandos do Cloud SDK, tente usar o SDK original do App Engine explicitamente. Antecipe a entrada em seu PATH para o SDK original do App Engine 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 implantar e criar vários serviços do aplicativo, primeiro você precisa 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.

Próximas etapas

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

Enviar comentários sobre…

Ambiente padrão do App Engine para Python