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

Como preparar arquivos de configuração para o ambiente de execução do Python 3

Antes de executar o aplicativo no ambiente de execução do Python 3 do ambiente padrão do App Engine, talvez seja necessário alterar alguns dos arquivos de configuração usados pelo App Engine:

  • app.yaml Esse arquivo contém informações sobre o código do aplicativo, como o ambiente de execução e o identificador da versão mais recente.

  • appengine_config.py. O ambiente de execução do Python 2 usa esse arquivo para instalar bibliotecas de cliente e fornecer valores para constantes e "funções hook". Esse arquivo não é usado no ambiente de execução do Python 3.

Atualizando app.yaml

O comportamento de alguns campos no arquivo de configuração app.yaml foi modificado. Remova todos os campos que não são mais compatíveis e atualize outros campos conforme descrito na tabela a seguir.

Campo Tipo de alteração Descrição
api_version
application_readable
builtins
Não é mais compatível Não aplicável no ambiente de execução do Python 3.
threadsafe Não é mais compatível Todas os aplicativos são presumidos como threadsafe. Se o aplicativo não for threadsafe, defina max_concurrent_requests como 1. Isso pode aumentar seus custos de forma significativa.
libraries Não é mais compatível Use o arquivo requirements.txt para declarar dependências e instalar bibliotecas de cliente.
handlers: login Não é mais compatível O campo login não é compatível Use o gerenciamento de identidade e acesso (IAM, na sigla em inglês) para o gerenciamento de usuários.
handlers: script Modificado No ambiente de execução do Python 2, use o campo script para rotear as solicitações recebidas para o script do aplicativo.

No ambiente de execução do Python 3, é necessário usar um framework da Web com roteamento no aplicativo (como Flask ou Django) em vez de usar o campo script.

Para migrar o arquivo app.yaml para o ambiente de execução do Python 3, execute uma das seguintes ações, dependendo se o arquivo contém gerenciadores estáticos e gerenciadores de script:

  • Se o arquivo app.yaml contiver gerenciadores estáticos, execute uma das ações a seguir para garantir que as solicitações de conteúdo dinâmico sejam roteadas para o script do aplicativo:
    • Remova todos os campos de script. Em seguida, adicione um campo entrypoint para iniciar um servidor da Web que executa o aplicativo. As solicitações que não correspondem a nenhum dos gerenciadores estáticos serão direcionadas ao servidor da Web especificado no campo entrypoint. O servidor da Web e o framework da Web do aplicativo são responsáveis pelo roteamento da solicitação para o script correto.
    • Substitua o valor de todos os campos script por auto. O App Engine executará automaticamente o aplicativo em um servidor da Web (supondo que o aplicativo atenda a alguns requisitos), e todas as solicitações que correspondem a um gerenciador de script serão direcionadas ao servidor da Web. O servidor da Web e o framework da Web do aplicativo são responsáveis pelo roteamento da solicitação para o script correto.
    • Se seu arquivo app.yaml não contiver gerenciadores estáticos, remova todos os campos script. Todas as solicitações para o aplicativo serão direcionadas ao respectivo servidor da Web e o framework do aplicativo roteará a solicitação para o script correto. Se preferir, é possível adicionar um campo entrypoint para personalizar o comportamento de inicialização padrão.

O processamento de arquivos estáticos permanece inalterado.

Se você usar qualquer um dos campos obsoletos, o App Engine retornará um erro ao implantar o aplicativo.

Como remover appengine_config.py

O ambiente de execução do Python 2 no ambiente padrão do App Engine usou o arquivo appengine_config.py incluindo bibliotecas com pacotes de terceiros disponíveis. O ambiente de execução do Python 3 ignora o arquivo appengine_config.py.

Em vez disso, o ambiente de execução do Python 3 usa o arquivo requirements.txt padrão para instalar dependências, incluindo dependências que usam código nativo. Para mais informações, consulte Como especificar dependências no ambiente de execução do Python 3.