在 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_apis 为 true 时支持 |
如果未使用 Python 3 版旧版捆绑服务,请使用 Identity and Access Management (IAM) 执行用户管理。 |
处理程序:脚本 | 已修改 | 在 Python 2 运行时中,您使用 script 字段将传入请求路由到应用的脚本。在 Python 3 运行时中,您需要使用具有应用内路由的 Web 框架(例如 Flask 或 Django),而不是使用 如需将
静态文件处理保持不变。 |
如果使用任何已弃用的字段,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: python311 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
文件来 安装依赖项,包括使用原生代码的依赖项。如需了解详情,请参阅 Python 3 运行时中的 指定依赖项。