Como preparar arquivos de configuração para o ambiente de execução do Python 3
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
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.
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
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.yamlnã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 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.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-04-21 UTC."],[[["\u003cp\u003eThe Python 3 runtime on App Engine standard environment requires updates to the \u003ccode\u003eapp.yaml\u003c/code\u003e file, while the \u003ccode\u003eappengine_config.py\u003c/code\u003e file is no longer used.\u003c/p\u003e\n"],["\u003cp\u003eSeveral fields in the \u003ccode\u003eapp.yaml\u003c/code\u003e file are no longer supported in Python 3, including \u003ccode\u003eapi_version\u003c/code\u003e, \u003ccode\u003eapplication_readable\u003c/code\u003e, \u003ccode\u003ebuiltins\u003c/code\u003e, \u003ccode\u003ethreadsafe\u003c/code\u003e, and \u003ccode\u003elibraries\u003c/code\u003e, each having different changes in requirements or methodology.\u003c/p\u003e\n"],["\u003cp\u003eIf using the legacy bundled services, the \u003ccode\u003eapp_engine_apis\u003c/code\u003e field in \u003ccode\u003eapp.yaml\u003c/code\u003e must be set to \u003ccode\u003etrue\u003c/code\u003e, and it enables the use of \u003ccode\u003ehandlers: login\u003c/code\u003e; otherwise, Identity and Access Management (IAM) should be used.\u003c/p\u003e\n"],["\u003cp\u003eIn Python 3, the \u003ccode\u003escript\u003c/code\u003e field in \u003ccode\u003eapp.yaml\u003c/code\u003e handlers is replaced by in-app routing using a web framework like Flask or Django, and the \u003ccode\u003eentrypoint\u003c/code\u003e field is used to start the web server, which will handle the routing.\u003c/p\u003e\n"],["\u003cp\u003eIn the Python 3 runtime, dependencies are installed using the standard \u003ccode\u003erequirements.txt\u003c/code\u003e file instead of the \u003ccode\u003eappengine_config.py\u003c/code\u003e file used in Python 2, meaning the latter file can be removed.\u003c/p\u003e\n"]]],[],null,["# Preparing configuration files for the Python 3 runtime\n\nBefore you can run your app in the Python 3 runtime of the App Engine standard environment, you\nmay need to change some of the configuration files that App Engine uses:\n\n- `app.yaml`. This file contains information about your app's code, such as the\n runtime and the app handlers.\n\n- `appengine_config.py`. The Python 2 runtime uses this file to access\n third-party libraries and provide values for constants and \"hook functions\".\n The Python 3 runtime doesn't use this file.\n\nUpdating `app.yaml`\n-------------------\n\nThe behavior of some fields in your\n[`app.yaml` configuration file](/appengine/docs/standard/reference/app-yaml#entrypoint)\nhas been modified. Remove any fields that are no longer supported and update\nother fields as described in the following table.\n\nIf you use any of the deprecated fields, App Engine returns an error\nwhen you deploy your app.\n\nYou can use the following examples to compare the differences between the\n`app.yaml` files: \n\n### Python 2\n\n```yaml\nruntime: python27\napi_version: 1\nthreadsafe: true\n\nhandlers:\n- url: /\n script: home.app\n\n- url: /index\\.html\n script: home.app\n\n- url: /stylesheets\n static_dir: stylesheets\n\n- url: /(.*\\.(gif|png|jpg))$\n static_files: static/\\1\n upload: static/.*\\.(gif|png|jpg)$\n\n- url: /admin/.*\n script: admin.app\n login: admin\n\n- url: /.*\n script: not_found.app\n```\n\n### Python 3\n\n runtime: python313\n app_engine_apis: true\n\n handlers:\n - url: /stylesheets\n static_dir: stylesheets\n\n - url: /(.*\\.(gif|png|jpg))$\n static_files: static/\\1\n upload: static/.*\\.(gif|png|jpg)$\n\n - url: /admin/.*\n script: auto\n login: admin\n\n| **Note:** For Python 3 the preferred WSGI-compatible web server is `gunicorn`. When you use the optional `entrypoint` field in your [`app.yaml`](/appengine/docs/standard/reference/app-yaml#runtime_and_app_elements) configuration file, the timeout for `gunicorn` defaults to 30 seconds. To set a custom timeout, update the `entrypoint` field: for example, `entrypoint: gunicorn -b :$PORT --timeout=600`. In this case, [make sure you\n| have included `gunicorn`](/appengine/docs/standard/python3/runtime#entrypoint_best_practices) in your `requirements.txt` file.\n\nRemoving `appengine_config.py`\n------------------------------\n\nThe Python 2 runtime in the App Engine standard environment uses the\n[`appengine_config.py`](/appengine/docs/legacy/standard/python/tools/using-libraries-python-27)\nfile.\n\nThis file is ignored in the Python 3 runtime. Instead, the Python 3 runtime\nuses the standard `requirements.txt` file to\n[install dependencies](/appengine/docs/standard/python3/specifying-dependencies),\nincluding dependencies that use native code."]]