代码之家  ›  专栏  ›  技术社区  ›  GeekTantra

如何检查appengine上是否提供了数据存储索引?

  •  1
  • GeekTantra  · 技术社区  · 14 年前

    如何检查index.yaml中定义的数据存储索引是否在python代码中提供?

    我使用的是python 1.3.6 appengine sdk。

    2 回复  |  直到 14 年前
        1
  •  2
  •   Nick Johnson    14 年前

    尝试执行需要该索引的查询。如果它引发NeedIndexError,则表示尚未上载或尚未提供服务。

        2
  •  0
  •   Alex Martelli    14 年前

    我认为没有一种方法可以在不向SDK代码添加日志的情况下进行检查。如果你在使用 SQLite stub , __FindIndexForQuery ,第1114-1140行,是查找查询的适用索引的部分,以及(第1140行)、返回和引用:

    一个实体_pb.compositeindex pb,如果 存在合适的索引;否则不存在

    在这一点上进行一点日志记录(当它将要从循环结束的时候——这就是它返回NONE的方式)将为您提供实际使用的所有索引的跟踪,当然,这些索引是日志的一部分。它返回的协议缓冲区是在中定义的类的实例 this file ,从第2576行开始。

    如果你能解释为什么你想知道这一点,我认为,在应用引擎跟踪器上打开一个功能请求是很合理的,要求谷歌添加我建议的日志,这样你就不必一直维护你编辑过的文件版本了!

    (如果使用文件存根,则相关文件是 here ,并且要检测的部分在824行和后面;当然,只有当您在“需要索引”模式下运行sdk,即“严格模式”时,才使用此部分,否则,索引是 创建于 不是 被使用 SDK;-)