尝试上传文件时,Google Drive REST API 有时会返回 500:内部服务器错误。大多数这些错误实际上对应于成功的上传。我们按照 Google 的建议重试上传,但稍后会看到重复项。
处理这些错误的推荐方法是什么?
尝试上传文件时,Google Drive REST API 有时会返回 500:内部服务器错误。大多数这些错误实际上对应于成功的上传。我们按照 Google 的建议重试上传,但稍后会看到重复项。
处理这些错误的推荐方法是什么?
Google 的文档似乎表明这是他们的内部错误,而不是您可以修复的特定错误。他们建议使用指数退避,这基本上是在增加间隔重新尝试该功能。
例如,函数失败。等待 2 秒,然后重试。如果失败,请等待 4 秒。然后是 8 秒、16 秒、32 秒等。更大的差距意味着您要为服务自己提供越来越多的时间。尽管根据您的需要,您可能希望最终限制时间,以便它在停止前最多等待 10 分钟。
该retrying
软件包对此进行了很好的设置。您可以在任何应该重新尝试的功能上用作装饰器from retrying import retry
。retry
这是我的一个例子:
@retry(wait_exponential_multiplier=1000, wait_exponential_max=60*1000, stop_max_delay=10*60*1000)
def find_file(name, parent=''):
...
要使用装饰器,您只需放在@retry
函数声明之前。您可以只使用retry()
,但您可以传递一些可选参数来调整时间的工作方式。我wait_exponential_multiplier
用来调整尝试之间等待时间的增加。wait_exponential_max
是它可以在尝试之间等待的最长时间。并且stop_max_delay
是在引发异常之前重试的时间。它们的所有值都以毫秒为单位。
此处描述了标准错误处理:https ://developers.google.com/drive/handle-errors
但是,永远不会发生 500 错误,因此请添加日志信息,Google 可以为您调试此问题。谢谢。