dispatch.yaml 默认生产环境时不为任务队列工作

dispatch.yaml not working for task queue when defaulting production environment

我开始将一个应用程序分成两个模块,并成功地在 App Engine 上安装了该应用程序 运行。我可以通过使用 module/version 特定 URL 来驱动流量来验证新配置,并查看请求和任务队列事件的处理是否没有错误。

例如,使用 - http://micro-services.msn-transit-api.appspot.com - 正确地将流量驱动到新的非默认版本。

但是,当我更新GAE控制台中的默认版本时,应该分派到新模块的请求没有路由正确。它们被分派到默认模块并由于端点已移动而失败。

好像dispatch.yaml没有激活。

默认应用程序 yaml 文件:

application: msn-transit-api
module: default
version: micro-services
runtime: python27
api_version: 1
threadsafe: true
instance_class: F1
automatic_scaling:
  min_idle_instances: 3

新模块 yaml 文件:

application: msn-transit-api
module: stats-and-maps
version: micro-services
runtime: python27
api_version: 1
threadsafe: true
instance_class: B1
basic_scaling:
  max_instances: 1

handlers:

# map apps
- url: /map(.*)
  script: stats_and_maps.maps.map.app

# stats task
- url: /stats/new/.*
  script: stats_and_maps.stats.stathat.application

调度 yaml:

dispatch:
  - url: "*/map*"
    module: stats-and-maps

  - url: "*/stats/*"
    module: stats-and-maps

值得注意的是,失败的端点正在被任务队列中的作业击中。

为什么在 GAE 上默认版本会改变其行为?

发现它隐藏在任务队列文档中。 :(

队列有一个 "target" 配置指令。 documentation 有这个金块:

If target is unspecified, then tasks are invoked on the same version of the application where they were enqueued

我相信他们在这种情况下可以互换使用 "version" 和 "module"。

这也让我可以删除那些路由的 dispatch.yaml 文件!