python - Google Drive drive.files.get API 经常出现 HTTP 500 内部错误

标签 python google-drive-api

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

查看生产日志,我们发现在调用 Google Drive 的 drive.files.get API 端点时出现许多 HTTP 500 Server Internal Errors。错误率约为0.5%。经过排查,发现极端情况是一小时连续9次HTTP 500失败。

异常看起来像这样:

  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 数据中心的 Amazon Web Service 上。

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

最佳答案

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

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

关于python - Google Drive drive.files.get API 经常出现 HTTP 500 内部错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12471180/

相关文章:

java - 将文件保存为 http 响应错误中收到的 .pdf

google-drive-api - 搜索文件时 Google Drive API 调用出现问题

c# - 如何安全地存储 google drive api 提供的每个用户的 OAuth 响应文件

Python 参数解析 : Preformatted help text?

python - 如何根据符号查找符号矩阵中元素的索引?

python - 如何为解码器加载经过训练的自动编码器权重?

python - logging.error() 调用了多少次?

android - Google Drive Android API - 检查文件夹是否存在

javascript - 在 IE 上使用 "Access Data Sources Accross Domains"下载 Google Drive 驱动器文件

python - 将函数应用于数据框中的每个观察