我有客户端应用程序将文件插入到Google云端硬盘中。有一次需要将多个文件插入Google云端硬盘。批量查询(GTLBatchQuery)用于一次向Google驱动器插入多个文件。在插入过程中的某个时间,服务器正在抛出速率限制超出错误:
"error" : {
"message" : "Rate Limit Exceeded",
"data" : [
{
"reason" : "rateLimitExceeded",
"message" : "Rate Limit Exceeded",
"domain" : "usageLimits"
}
],
"code" : 417
},
请指导我正确启用此错误的重试方法。我已尝试将retryenabled设置为服务:
self.driveService.retryEnabled = YES;
self.driveService.maxRetryInterval = 60.0;
但它没有效果。
GTMHTTPFetcher
? 任何关于在objective-c中实现指数退避的代码片段都表示赞赏。
答案 0 :(得分:3)
标准指数退避(如Google文档中所示)不是处理速率限制错误的正确方法。您只需重试Drive并使问题变得更糟。
此外,如果您有超过20个左右的更新,那么批量发送多个更新几乎可以保证触发速率限制错误,所以我也不会这样做。
我的建议是: -
这些数字都没有记录,可能会有变化。
3的原因是驱动器中存在(有,谁知道)错误,即使更新返回了速率限制错误,它确实成功了,因此您最终可能会插入重复文件。见403 rate limit on insert sometimes succeeds