0

我收到了我完全没想到会从 appengine 进行查询的回复。

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

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

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

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

更新

尝试了其他一些场景:

  • 在后端运行它 - 没有应用程序引擎请求超时 - 同样的事情:约 9.8 秒的请求返回发现 json

  • 再次在开发(本地主机)中运行它,以确保:一切都很好

  • 最有趣的是,以更短的 4 秒超时运行它(而不是之前的 35 秒)会在相同的 9.8 秒间隔后产生相同的发现回复

4

2 回答 2

0

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

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

检查httplib2/__init__.py

__version__ = "0.8"
于 2013-05-20T20:58:24.853 回答
0

来自 App Engine配额文档

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

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

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

于 2012-11-29T21:27:08.100 回答