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 文件!
我开始将一个应用程序分成两个模块,并成功地在 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 文件!