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

时间:2015-12-06 18:21:58

标签: google-app-engine gae-module

我开始将应用程序拆分为两个模块,并成功让应用程序在App Engine上运行。我可以使用特定于模块/版本的URL来验证新配置,以便驱动流量并查看处理过的请求和任务队列事件,而不会出错。

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

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

就好像dispatch.yaml没有被激活一样。

默认App 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版本会改变其行为?

1 个答案:

答案 0 :(得分:1)

发现它隐藏在Task Queue文档中。 :(

队列具有“目标”配置指令。 enter image description here有这个金块:

  

如果未指定target,则在同一版本上调用任务   他们入队的申请书

我相信他们在这种情况下可以互换使用“版本”和“模块”。

这也允许我取消这些路线的dispatch.yaml文件!