为 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 Engine 会在您部署应用时返回错误。

移除 appengine_config.py

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

此文件在 Python 3 运行时中会被忽略。相反,Python 3 运行时会使用标准 requirements.txt 文件来 安装依赖项,包括使用原生代码的依赖项。如需了解详情,请参阅 Python 3 运行时中的 指定依赖项