当我运行以下代码时:
bq_client = google.cloud.bigquery.Client(project='project')
query1 = """
UPDATE dataset.table SET col = 1 where id = 'a'
"""
query2 = """
UPDATE dataset.table SET col = 2 where id = 'b'
"""
p = google.api_core.retry.if_exception_type(Exception)
r = google.api_core.retry.Retry(predicate=p)
bq_client.query(query1)
bq_client.query(query2, retry=r)
第一个查询作业成功,但第二个查询作业失败(因为bigquery不支持同时更新),而且似乎永远不会重试。但是,我传递了一个“Retry”对象,该对象捕获第二个查询作业的所有异常。我不明白为什么不重试第二个查询作业。在
我认为原因是retry选项会重试API调用以插入作业,但实际上它不会为您重试作业。
在这种情况下,API“成功”(至少就HTTP错误代码而言),但是响应主体说作业失败了。
python中的解决方法:
它将尝试你的查询作业多达7次与一种指数退避。
相关问题 更多 >
编程相关推荐