1

我开始将一个应用程序拆分为两个模块,并成功地让该应用程序在 App Engine 上运行。我可以通过使用模块/版本特定的 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 上默认版本会改变其行为?

4

1 回答 1

1

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

队列有一个“目标”配置指令。该文档有这个块:

如果未指定目标,则任务将在它们被排队的同一版本的应用程序上调用

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

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

于 2015-12-06T18:49:21.930 回答