使用dispatch.yaml文件,可以将不同的URL路径分配到不同的服务上。但是,如果某个服务版本没有流量,则无论在dispatch.yaml文件中定义怎样的路由规则,该服务版本都不会受到影响。
解决这个问题的方法是,在该服务版本的app.yaml文件中,为该版本定义一个特定的路由。这样,在dispatch.yaml文件中定义的路由规则无法匹配该服务版本时,也可以通过该版本的app.yaml中的路由来访问该服务。
以下是一个示例,其中dispatch.yaml中的路由规则无法匹配某个服务版本(version2):
dispatch.yaml
dispatch:
- url: "example.com/*"
service: default
app.yaml
service: version2
runtime: python27
api_version: 1
threadsafe: true
handlers:
- url: /version2/.*
script: main.app
- url: /.*
script: main.app
在这个例子中,当访问example.com时,dispatch.yaml将路由到默认服务。但是,在version2服务中,没有路由规则匹配example.com的URL。但是,version2的app.yaml定义了一个路由(/version2/. *),因此可以通过URL example.com/version2/来访问该服务。