Google App Engine模块:对路由感到困惑(dispatch.yaml)

时间:2014-06-09 14:45:42

标签: python google-app-engine dispatch

[在深入研究问题之后,似乎问题不在于路由,而在于模块中端点的使用。 GAE Modules and Google Endpoints

的新问题

我正在将GAE应用程序迁移到模块,我对路由感到困惑,因为有些查询被正确路由,但并非所有查询都被路由。

我的根文件夹中有以下dispatch.yaml。请注意,该api模块正在使用Google Cloud Enpoints API

application: testapp

dispatch:
  - url: "*/foo/*"
    module: foomodule
  - url: "*/_ah/spi/*"
    module: api
  - url: "testapp.appspot.com/"
    module: default

然后是一个按模块名称的文件夹,每个文件夹都有一个yaml文件,用处理程序定义URL模式,例如: /www/www.yaml为我的默认模块

application: testapp
version: alpha
runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: /static
  static_dir: static
- url: /.*
  script: www.app

libraries:
- name: webapp2
  version: latest

http://testapp.appspot.com/xxx等查询被正确地重定向到默认值,/ foo / xxx是由foomodule处理的,但API请求(/ _ah / spi / xxx)将使用404进入默认模块。 / p>

但是,我可以在映射到api模块的实例的日志中看到/ OK / spi / BootendService.logMessages 200 OK。这个来自alpha-dot-api-dot -testapp.appspot.com - 而404仅来自testapp.appspot.com。 (注意:我想让我的查询在testapp.appspot.com上运行)

我做错了吗?此外,有没有办法列出服务器上当前使用的配置,以确保它已正确部署?

1 个答案:

答案 0 :(得分:2)

很有可能将端点api分解为一个单独的模块并使用dispatch.yaml设置路由,但是使用dev_appserver.py你似乎无法做到这一点。基于代码:https://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/tools/devappserver2/dispatcher.py?r=411#704

if (not path.startswith('/_ah/') or
    any(path.startswith(wl) for wl
        in DISPATCH_AH_URL_PATH_PREFIX_WHITELIST)):
  return True
else:
  logging.warning('Skipping dispatch.yaml rules because %s is not a '
                  'dispatchable path.', path)
  return False

/_ah/开头的任何路径都不是可分派路径。