Google Drive API文件监视速率限制



我正在使用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每秒仅插入1次后的速率限制,但它并不能真正提供答案

如果你能给我指明正确的方向,我将不胜感激。

403速率限制是你的敌人-避开它们。谷歌使用令牌/桶机制进行费率限制。这意味着你可以爆发API调用的数量,高达25-39个左右,没有任何问题。之后,代币以大约每秒1个的速度被补充。这通常意味着,在前30个交易之后,除非你自愿每1.5秒将其限制在1以下,否则你的大多数后续交易都会失败。这远比指数退让有效,指数退让通常会导致第一次退让也失败,第二次成功。结果是3个驱动器API调用,成功调用需要3秒(加上网络)。如果你在第一个403之后节流,每个订阅将是一个单独的驱动器API调用,并将在1.5秒后成功。如果你正在进行许多订阅,这些额外的1.5秒很快就会累积起来。

403的问题之一是,有时事务实际上已经成功。我怀疑这是否是手表订阅的问题,但可能是插入和一些更新的问题。

谷歌似乎没有在任何地方记录费率限制。他们已经发布了一份文档,描述了处理API错误的推荐方法。

实现简单指数回退的流程如下:

  1. 向API发出请求
  2. 收到HTTP 403速率受限的响应,这表示您应该重试该请求
  3. 等待1+random_number_milliseconds,然后重试请求
  4. 收到HTTP 403速率受限的响应,这表示您应该重试该请求
  5. 等待2+random_number_milliseconds,然后重试请求
  6. 收到HTTP 403速率受限的响应,这表示您应该重试该请求
  7. 等待4+random_number_milliseconds,然后重试请求
  8. 收到HTTP 403速率受限的响应,这表示您应该重试该请求
  9. 等待8+random_number_milliseconds,然后重试请求
  10. 收到HTTP 403速率受限的响应,这表示您应该重试该请求
  11. 等待16+random_number_milliseconds,然后重试请求
  12. 停下。报告或记录错误

最新更新