Google Drive驱动器的常见HTTP 500内部错误.files.get API



我们有一个高度依赖Google Drive的服务(它使用Python SDK),我们的服务通过Google Drive集合和文件。

检查生产日志,我们发现当我们调用Google Drive的drive.files.getAPI端点时,存在许多HTTP 500服务器内部错误。错误率约为0.5%。经过调查,我发现极端情况是一小时内连续9次HTTP500失败。

例外情况如下:

File "/home/xxxxxx/xxxxxxx/storage.py", line 1185, in get_file
gdrive_file = self.client.files().get(fileId='0Bxn2GmQxR4zHYlNvaUlFNjl6MkE', fields='id,title,modifiedDate,createdDate,fileSize,mimeType,downloadUrl,labels').execute()
File "/usr/lib/python2.7/dist-packages/apiclient/http.py", line 389, in execute
raise HttpError(resp, content, self.uri)
HttpError: <HttpError 500 when requesting https://www.googleapis.com/drive/v2/files/0Bxn2GmQxR4zHYlNvaUlFNjl6MkE?fields=id%2Ctitle%2CmodifiedDate%2CcreatedDate%2CfileSize%2CmimeType%2CdownloadUrl%2Clabels&alt=json returned "Internal Error">

我们的服务托管在美国WEST-2数据中心的亚马逊网络服务上。

有人遇到过类似的问题吗?感谢您的帮助。

由于谷歌基础设施复杂、规模庞大且分布广泛,几乎不可能有0%的错误率-服务器或硬盘在请求过程中死亡、服务器内部意外超时、数据中心中断或负载增加、临时DOS攻击、应用程序错误…-所有这些都可能提高500的错误率-因此,作为一种一般的好做法,当你处理Web API时,在你的一端实施指数后退和重试策略是很好的,实际上,如果你想提供可靠的服务,这几乎是强制性的,在你端,它可能会消除临时网络故障等。

现在0.5%有点高,我相信全局错误率平均较低,但我将把它提交给Drive团队,以便他们进行调查并尝试减少这种情况(有时只是增加我们的服务器依赖项的超时时间)。我们一直在努力降低错误率,但有时我们不得不花时间构建新功能,尤其是当产品相当新时:)

这与我看到的错误率大致相同。只需做一次指数后退,然后重试。

我使用tenacity重试请求。首先安装

pip install tenacity

然后

from tenacity import retry, retry_if_exception_type, wait_exponential, stop_after_attempt
from googleapiclient.errors import HttpError
@retry(reraise=True, retry=retry_if_exception_type(HttpError),
wait=wait_exponential(),
stop=stop_after_attempt(5))
def function_that_calls_the_google_drive_api():
pass

相关内容

最新更新