我正在使用 GoogleApp Engine,有时当我通过 JSON API 向 BigQuery 发送查询时,我会得到不正确的结果。它通常仅限于 BigQuery 中的一个表(我为每个创建的批处理作业创建一个新表)。当我在生产中遇到这个问题时,我会记录我提交的查询并尝试通过 BigQuery 仪表板运行它,该仪表板的运行时间比预期的要长,但会返回预期的结果。
响应中没有任何内容表明存在问题。jobComplete
回来了,但True
我看不到rows
,只有jobReference
, schema
和totalRows = 0
。
在这种情况下是否适合进行调用以获取作业结果,即使我应该期望当前调用返回结果?
相关代码:
http = httplib2.Http(memcache)
self.credentials = AppAssertionCredentials(scope='https://www.googleapis.com/auth/bigquery')
self.http = self.credentials.authorize(http=http)
self.service = build('bigquery','v2',http=self.http)
jobs = self.service.jobs()
result = jobs.query(projectId=settings.GOOGLE_APIS_PROJECT_ID,
body={'query': query}).execute()
回复:
{u'totalRows': u'0', u'kind': u'bigquery#queryResponse', u'jobComplete': True, u'jobReference': {u'projectId': u'<REMOVED>', u'jobId': u'<REMOVED>'}, u'schema': {u'fields': [<REMOVED>]}}
无论我尝试在生产中重新运行查询多少次,都会返回相同的结果(这可能是由于通过 memcache 完成的缓存将不正确的结果缓存为响应?)