Preparar ficheiros de configuração para o tempo de execução do Python 3

Antes de poder executar a sua app no tempo de execução do Python 3 do ambiente padrão do App Engine, pode ter de alterar alguns dos ficheiros de configuração que o App Engine usa:

  • app.yaml. Este ficheiro contém informações sobre o código da sua app, como o tempo de execução e os controladores da app.

  • appengine_config.py. O tempo de execução do Python 2 usa este ficheiro para aceder a bibliotecas de terceiros e fornecer valores para constantes e "funções de gancho". O tempo de execução do Python 3 não usa este ficheiro.

A atualizar app.yaml

O comportamento de alguns campos no seu app.yaml ficheiro de configuração foi modificado. Remova todos os campos que já não são suportados e atualize outros campos, conforme descrito na tabela seguinte.

Campo Alterar tipo Descrição
app_engine_apis Aplicável apenas ao Python 3 Tem de estar definido como true se quiser aceder aos serviços agrupados antigos para Python 3.
api_version
application_readable
builtins
Já não é suportado Não aplicável no tempo de execução do Python 3.
threadsafe Já não é suportado Presume-se que todas as aplicações são seguras para threads. Se a sua aplicação não for segura para threads, especifique um entrypoint configurando 1 thread por trabalhador.

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

Consulte as práticas recomendadas de ponto de entrada para o número recomendado de trabalhadores para cada classe de instância.
bibliotecas Já não é suportado Use o ficheiro requirements.txt para declarar dependências e instalar bibliotecas de cliente.
controladores: login Suportado se app_engine_apis for true Se não estiver a usar os serviços agrupados antigos para o Python 3, use a gestão de identidade e de acesso (IAM) para a gestão de utilizadores.
handlers: script Modificado No tempo de execução do Python 2, usa o campo script para encaminhar os pedidos recebidos para o script da sua app.

No tempo de execução do Python 3, tem de usar uma framework Web com encaminhamento na app (como o Flask ou o Django) em vez de usar o campo script.

Para migrar o seu ficheiro app.yaml para o motor de execução do Python 3, faça uma das seguintes ações, consoante o ficheiro contenha controladores estáticos bem como controladores de scripts:

  • Se o seu ficheiro app.yaml contiver controladores estáticos, faça uma das seguintes ações para garantir que os pedidos de conteúdo dinâmico são encaminhados para o script da sua app:
    • Remova todos os campos script. Em seguida, adicione um campo entrypoint para iniciar um servidor Web que execute a sua app. Os pedidos que não correspondam a nenhum dos seus controladores estáticos são direcionados para o servidor Web especificado no campo entrypoint. O servidor Web e a estrutura Web da sua app são responsáveis pelo encaminhamento do pedido para o script correto.
    • Substitua o valor de todos os campos script por auto. O App Engine executa automaticamente a sua app num servidor Web (partindo do princípio de que a sua app cumpre alguns requisitos) e todos os pedidos que correspondam a um controlador de scripts são direcionados para o servidor Web. O servidor Web e a estrutura Web da sua app são responsáveis por encaminhar o pedido para o script correto.
    • Se o seu ficheiro app.yaml não contiver processadores estáticos, remova todos os campos script. Todos os pedidos à sua app são direcionados para o servidor Web da app, e a framework da app encaminha o pedido para o script correto. Opcionalmente, pode adicionar um campo entrypoint para personalizar o comportamento de arranque predefinido. Se o seu app.yaml tiver ambos os tipos de processadores, pode continuar a remover todos os processadores de scripts que seriam marcados auto, deixando os processadores estáticos, bem como os processadores auto que requerem outras diretivas, como o processador apenas para administradores no exemplo abaixo.

O processamento de ficheiros estáticos permanece inalterado.

Se usar algum dos campos descontinuados, o App Engine devolve um erro quando implementar a sua app.

Pode usar os seguintes exemplos para comparar as diferenças entre os ficheiros 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: python313
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

A remover appengine_config.py

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

Este ficheiro é ignorado no tempo de execução do Python 3. Em alternativa, o tempo de execução do Python 3 usa o ficheiro requirements.txt padrão para instalar dependências, incluindo dependências que usam código nativo.