为 Python 3 运行时准备配置文件

在 App Engine 标准环境的 Python 3 运行时中运行应用之前,可能需要更改该 App Engine 使用的一些配置文件:

  • app.yaml。此文件包含应用代码的相关信息,例如运行时和应用处理程序。

  • appengine_config.py。Python 2 运行时使用此文件访问第三方库,并为常量和“钩子函数”提供值。Python 3 运行时不使用此文件。

正在更新“app.yaml

您的 app.yaml 配置文件中某些字段的行为已修改。移除所有不再受支持的字段并更新其他字段,如下表所述。

字段 更改类型 说明
app_engine_apis 仅适用于 Python 3 如果要访问 Python 3 版旧版捆绑服务,则必须设置为 true
api_version
application_readable
builtins
不再支持 不适用于 Python 3 运行时。
线程安全 不再支持 假定所有应用的线程安全。如果您的应用不具备线程安全性,请指定一个 entrypoint,为每个工作器配置 1 个线程。

例如,使用 F4 实例类时:
entrypoint: gunicorn -b :$PORT -w 8 --threads 1 main:app

请参阅入口点最佳做法,了解每个实例类的推荐工作器数量。
不再支持 使用 requirements.txt 文件声明依赖项并安装客户端库
处理程序:登录 app_engine_apistrue 时支持 如果未使用 Python 3 版旧版捆绑服务,请使用 Identity and Access Management (IAM) 执行用户管理。
处理程序:脚本 已修改 在 Python 2 运行时中,您使用 script 字段将传入请求路由到应用的脚本。

在 Python 3 运行时中,您需要使用具有应用内路由的 Web 框架(例如 Flask 或 Django),而不是使用 script 字段。

如需将 app.yaml 文件迁移到 Python 3 运行时,请执行以下操作之一,具体取决于该文件是否包含静态处理程序以及脚本处理程序:

  • 如果您的 app.yaml 文件包含静态处理程序,请执行以下操作之一,以确保将动态内容请求路由到应用的脚本:
    • 移除所有 script 字段。然后添加 entrypoint 字段以启动运行应用的 Web 服务器。与任何静态调度程序均不匹配的请求将定向到您在 entrypoint 字段中指定的 Web 服务器。Web 服务器和应用的 Web 框架负责将请求路由到正确的脚本。
    • 将所有 script 字段的值替换为 auto。App Engine 将在 Web 服务器中自动运行应用(假设应用符合一些要求),与脚本处理程序匹配的所有请求都将定向到该 Web 服务器。Web 服务器和应用的 Web 框架负责将请求路由到正确的脚本。
    • 如果您的 app.yaml 文件包含静态处理程序,请移除所有 script 字段。发送到应用的所有请求都将定向到应用的 Web 服务器,并且应用的框架会将请求路由到正确的脚本。您可以选择添加 entrypoint 字段来自定义默认启动行为。 如果您的 app.yaml 同时具有这两种类型的处理程序,您仍然可以移除标记为 auto 的所有脚本处理程序,并留下静态处理程序以及需要使用其他指令的 auto 处理程序,例如以下示例中的管理员专用处理程序。

静态文件处理保持不变。

如果使用任何已弃用的字段,App Engine 会在您部署应用时返回错误。

您可以使用以下示例比较 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

移除 appengine_config.py

App Engine 标准环境中的 Python 2 运行时使用 appengine_config.py 文件。

此文件在 Python 3 运行时中会被忽略。相反,Python 3 运行时会使用标准 requirements.txt 文件来 安装依赖项,包括使用原生代码的依赖项。