Google App Engine 到 python3 迁移sync.yaml

问题描述 投票:0回答:1

我正在sync.yaml 中部署以下内容。这是我的 python 2 项目的一部分。

service: sync
instance_class: F2
automatic_scaling:
  max_instances: 1
runtime: python312
app_engine_apis: true

# taskqueue and cron tasks can access admin urls

handlers:
- url: /.*
  script: sync.app
  secure: always
  redirect_http_response_code: 301

env_variables:
  MEMCACHE_USE_CROSS_COMPATIBLE_PROTOCOL: "True"
  NDB_USE_CROSS_COMPATIBLE_PICKLE_PROTOCOL: "True"
  DEFERRED_USE_CROSS_COMPATIBLE_PICKLE_PROTOCOL: "True"
  CURRENT_VERSION_TIMESTAMP: "1677721600" 

处理程序在名为sync.py 的文件中定义。尽管引用说是sync.app,但该处理程序会调用我的名为sync.py 的Python 脚本吗?

我问的原因是因为当我调用同步引用的网址时(通过主机名中的前缀“sync”指定),我收到错误,使我相信它正在按指定调用 main.py在 apps.yaml 中。

此模式在 python 2 中有效。

python google-app-engine
1个回答
0
投票

处理程序在名为 sync.py 的文件中定义。尽管引用说 sync.app,但该处理程序是否会调用我的名为 sync.py 的 Python 脚本?

是的,它会调用

sync.py
文件。 本文档中有详细解释。

在较新的 App Engine 运行时中,script 字段的行为已更改。

在 Python 2 运行时中,您可以使用 script 字段将传入请求路由到应用程序的脚本。

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

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

如果您的 app.yaml 文件包含静态处理程序,请执行以下操作之一以确保将对动态内容的请求路由到您的应用程序的脚本:

  1. 删除所有脚本字段。然后添加一个 entrypoint 字段来启动运行您的应用程序的 Web 服务器。与您的任何静态处理程序都不匹配的请求将被定向到您在入口点字段中指定的 Web 服务器。 Web 服务器和应用程序的 Web 框架负责将请求路由到正确的脚本。

  2. 将所有脚本字段的值替换为 auto。 App Engine 将自动在 Web 服务器中运行您的应用程序(假设您的应用程序满足一些要求),并且与脚本处理程序匹配的所有请求都将定向到 Web 服务器。 Web 服务器和应用程序的 Web 框架负责将请求路由到正确的脚本。

  3. 如果您的 app.yaml 文件不包含静态处理程序,请删除所有脚本字段。对应用程序的所有请求都将定向到应用程序的 Web 服务器,并且应用程序的框架会将请求路由到正确的脚本。您可以选择添加 entrypoint 字段来自定义 默认启动行为。如果您的 app.yaml 具有两种类型的处理程序,您仍然可以删除所有标记为 auto 的脚本处理程序,留下静态处理程序以及需要其他指令的自动处理程序,例如下面示例中的仅管理处理程序.

另请查看此 Link1Link2 以供参考。

© www.soinside.com 2019 - 2024. All rights reserved.