Google表格API HttpError 500和503

时间:2016-10-15 14:06:43

标签: python google-sheets google-api google-api-client google-sheets-api

编辑:已解决,问题出在谷歌方面。在请求具有无效间隔的图表的工作表时发生。向Google报告错误。

注意:此问题已持续超过2天。我以前吃过它但是等了一天之后就自动解决了。它已经重新开始了。

我目前正通过Google的python api客户端使用Google表格API。身份验证是OAuth2.0,我没有改变我的代码库中的任何重要内容,但突然间我得到100%的错误率,似乎它应该在谷歌的最后。我担心我被无限期地禁止使用API​​,是这种情况吗?我的猜测是,当我启动脚本并立即用ctrl + c取消它时,因为我想运行它的新版本会导致一些问题。

我尝试创建另一个项目并使用其凭据发出请求并得到相同的错误。试过让我的朋友运行脚本通过他的谷歌帐户进行身份验证,他收到了同样的错误。独立的source code can be found here

关于源代码:get_credentials()(以及身份验证)完全从Google的python quickstart脚本中复制,如https://developers.google.com/sheets/quickstart/python所示。

回溯:

Traceback (most recent call last):
  File "Google_sheets.py", line 164, in <module>
    ss=Spreadsheet(SPREADSHEET_ID)
  File "Google_sheets.py", line 83, in __init__
    spreadsheetId=self.ssId, includeGridData=True).execute()['sheets']}
  File "C:\Users\Larsson\AppData\Local\Programs\Python\Python35-32\lib\site-packages\oauth2client\util.py", line 137, in positional_wrapper
    return wrapped(*args, **kwargs)
  File "C:\Users\Larsson\AppData\Local\Programs\Python\Python35-32\lib\site-packages\googleapiclient\http.py", line 838, in execute
    raise HttpError(resp, content, uri=self.uri)
googleapiclient.errors.HttpError: <HttpError 500 when requesting https://sheets.googleapis.com/v4/spreadsheets/12YdppOoZUNZxhXvcY_cRgfXEfRnR_izlBsF8Sin3rw4?alt=json&includeGridData=true returned "Internal error encountered.">

在不久之后重试之后,我又收到了另一个错误:

Traceback (most recent call last):
  File "Google_sheets.py", line 164, in <module>
    ss=Spreadsheet(SPREADSHEET_ID)
  File "Google_sheets.py", line 83, in __init__
    spreadsheetId=self.ssId, includeGridData=True).execute()['sheets']}
  File "C:\Users\Larsson\AppData\Local\Programs\Python\Python35-32\lib\site-packages\oauth2client\util.py", line 137, in positional_wrapper
    return wrapped(*args, **kwargs)
  File "C:\Users\Larsson\AppData\Local\Programs\Python\Python35-32\lib\site-packages\googleapiclient\http.py", line 838, in execute
    raise HttpError(resp, content, uri=self.uri)
googleapiclient.errors.HttpError: <HttpError 503 when requesting https://sheets.googleapis.com/v4/spreadsheets/12YdppOoZUNZxhXvcY_cRgfXEfRnR_izlBsF8Sin3rw4?includeGridData=true&alt=json returned "The service is currently unavailable.">

4 个答案:

答案 0 :(得分:1)

解决了,问题出在谷歌方面。在请求具有包含无效/未选定间隔的图表的工作表时发生。向Google报告错误。

通过将所有无效图表更改为有效范围进行修复。

答案 1 :(得分:1)

我也遇到了这个错误,经过一些小小的讨论,我发现它在我的下拉框上有数据验证。重新编辑您的验证,选择相同的单元格并重新保存,冲洗并重复所有这些字段,它应该可以正常工作。

PS:鉴于这似乎会影响其他类型的数据,我建议您删除部分文档,直到它开始在脚本端工作,这样您的上一步操作就会指出哪些单元格存在问题。

答案 2 :(得分:0)

500和503是Google服务器问题。您需要实现指数退避,以便您可以再次重试该事务。请查看此链接 - https://developers.google.com/admin-sdk/directory/v1/limits

并且,所有API都有使用限制。查看此链接 - https://developers.google.com/gmail/api/v1/reference/quota

答案 3 :(得分:0)

Standard Error Responses中所述,错误代码#500和#503是与服务器关联的错误。建议的操作是不要多次重试查询。

要处理这些错误代码:

  

在重负载或更大的更复杂请求期间可能会导致500或503错误。对于较大的请求,请考虑在较短的时间段内请求数据。同时考虑 implementing exponential backoff

如果大量请求或繁重的网络流量导致服务器返回错误,则指数退避可能是处理这些错误的好策略。

除此之外,您还应检查您的申请是否超过usage limits。如果是这样,则应该优化应用程序代码以减少请求。如果需要,您可以选择在项目的“配额”标签下的Google API控制台中请求其他配额。