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 os gerenciadores do aplicativo.

  • appengine_config.py. O ambiente de execução do Python 2 usa esse arquivo para acessar bibliotecas de terceiros 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 Alterar tipo Descrição
app_engine_apis Aplicável somente ao Python 3 Obrigatório para ser definido como true se você quiser acessar os serviços em pacote legados para Python 3.
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 app não for seguro para linhas de execução, especifique um entrypoint configurando uma linha de execução por worker.

Por exemplo, ao usar a classe de instância F4:
entrypoint: gunicorn -b :$PORT -w 8 --threads 1 main:app

Veja as práticas recomendadas para pontos de entrada para o número recomendado de workers para cada classe de instância.
libraries Não é mais compatível Use o arquivo requirements.txt para declarar dependências e instalar bibliotecas de cliente.
handlers: login Compatível se app_engine_apis for true Se você não estiver usando os serviços incluídos legados para Python 3, 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. Se app.yaml tiver os dois tipos de gerenciador, ainda será possível remover todos os gerenciadores de script que seriam marcados como auto, deixando para trás os gerenciadores estáticos e também gerenciadores auto que exigem outras diretivas, como o gerenciador exclusivo para administradores no exemplo abaixo.

O processamento de arquivos estático permanece inalterado.

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

Use os exemplos a seguir para comparar as diferenças entre os arquivos app.yaml:

Python 2

runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: /
  script: home.app

- url: /index\.html
  script: home.app

- url: /stylesheets
  static_dir: stylesheets

- url: /(.*\.(gif|png|jpg))$
  static_files: static/\1
  upload: static/.*\.(gif|png|jpg)$

- url: /admin/.*
  script: admin.app
  login: admin

- url: /.*
  script: not_found.app

Python 3

runtime: python312
app_engine_apis: true

handlers:
- url: /stylesheets
  static_dir: stylesheets

- url: /(.*\.(gif|png|jpg))$
  static_files: static/\1
  upload: static/.*\.(gif|png|jpg)$

- url: /admin/.*
  script: auto
  login: admin

Removendo appengine_config.py

O ambiente de execução do Python 2 no ambiente padrão do App Engine usa o arquivo appengine_config.py.

Esse arquivo é ignorado no ambiente de execução do Python 3. 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.