我正在使用Google Drive API,并在通过观看通知(频道)时收到以下错误
Error calling POST https://www.googleapis.com/drive/v2/files/xxxxxxxxxxxxxx/watch: (403) Rate limit exceeded for creating file subscriptions
是否有特定的,有记录的费率限制为:
a)每秒申请新频道(观看通知)
b)每天的并发频道(观看通知)
我已经阅读了这个问题 403 rate limit after only 1 insert per second,但它并没有真正提供答案
如果你能指出我正确的方向,我将不胜感激。
答案 0 :(得分:2)
403率限制是你的敌人 - 避免它们。谷歌使用令牌/桶机制进行速率限制。这意味着您可以毫无问题地突破大约25-39的API调用。之后,令牌以每秒约1次的速度补充。这通常意味着在前30个之后,大多数后续交易都将失败,除非您自愿将它们每1.5秒低于一个。这比指数退避更有效,这通常会导致第一次退避也失败,第二次成功发生。结果是3次Drive API调用,成功呼叫需要3秒钟(加上网络)。如果你在第一个403之后加油,那么每个订阅将是一个Drive API调用,并且会在1.5秒后成功。如果您正在进行许多订阅,那么额外的1.5s很快就会加起来。
403的问题之一是有时交易实际上已成功。我怀疑它是否是手表订阅的问题,但可以用于插入和一些更新。
答案 1 :(得分:1)
Google似乎没有在任何地方记录费率限制。他们已经发布了一份文档,描述了handling API errors的推荐方法。
实现简单指数退避的流程如下: