python - Google 应用程序引擎模块 :Confused about routing (dispatch. yaml)

标签 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 的默认模块。

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

我是不是做错了什么?另外,有没有办法列出服务器上当前使用的配置以确保其正确部署?

最佳答案

将端点 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/ 开头的路径都不是可分派(dispatch)路径。

关于python - Google 应用程序引擎模块 :Confused about routing (dispatch. yaml),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24122757/

相关文章:

Python 递归读取数据

python - 如何在特定时间运行我的代码?

python - 动态设置tensorflow变量的可训练性

python - 描述星期几的最佳方式是什么?

java - ArrayList HashMap 未定义

java - Noclassdeffounderror - 找不到 v7 支持(android studio)

python - 在 Pandas 中捕捉时间

ios - Swift 编写一个带有返回值的 async/await 方法

javascript - 在 IE 11 中发送事件的正确方法

React-Native/Redux-传奇 : how to wait for dispatch to finish