对BigQuery查询的错误响应:kind:discovery#restDescription而不是bigquery#queryResults

时间:2012-11-29 14:37:43

标签: google-app-engine google-bigquery

我收到回复我完全没想到我正在通过appengine进行查询。

而不是根据BigQuery文档预期的那种“bigquery#queryResults”的响应,我得到了

u'basePath': u'/bigquery/v2/', u'kind': u'discovery#restDescription',....

似乎只会发生需要10-15秒及以上的查询,我怀疑这是与Appengine动态60秒超时的一些奇怪的交互。

我在python27上运行,并使用google-api-python-client来处理请求。

更新

尝试了其他一些场景:

  • 在后端运行 - 没有应用appengine请求超时 - 同样的事情:〜9.8s进入请求发现json被返回

  • 再次在dev(localhost)中运行它,以确保:一切都很好

  • 最有趣,使用较短的超时4s (而不是之前的35s)运行它会导致之后的相同发现回复相同的9.8s 间隔

2 个答案:

答案 0 :(得分:0)

来自App Engine quota docs

Each incoming HTTP request can be no larger than 32MB.

您的查询可能返回超过32 MB的数据,这导致HTTP 500错误,导致API提供您在上面看到的输出(这是BigQuery API Discovery文档信息 - 此响应可能是与Python Client lib如何处理App Engine上的错误响应有关的单独问题。

建议的解决方法:如果查询响应返回大量数据,则可以使用maxResults参数将响应页中返回的行数限制为较小的数量。然后,您可以连续调用API以检索后续数据页。

答案 1 :(得分:0)

这是底层httplib2库中已知且已修复的错误。

确保您使用的是0.8或更高版本:

httplib2/__init__.py中检查:

__version__ = "0.8"