【问题标题】:Can't find a way to deal with Google Drive API 403 Rate Limit Exceeded找不到处理 Google Drive API 403 Rate Limit Exceeded 的方法
【发布时间】:2015-11-22 12:21:56
【问题描述】:

我在 Google 云端硬盘域中有大量用户和文件。 +100k 用户,+10M 文件。我需要每个月获取这些文件的所有权限。

每个用户都有自己拥有的文件,以及由其他域用户和/或外部用户(不属于域的用户)共享的文件。大多数文件归域用户所有。域用户拥有超过 700 万个唯一文件。

我的应用是一个后端应用,它使用域管理员用户授予的令牌运行。

我认为执行批量请求是最好的方法。然后,我在谷歌开发者控制台中将我的应用程序配置为每个用户 1000 个请求。

我尝试了以下几种情况:

  1. 每批 1000 个请求,每个用户最多 1000 个 -> 大量用户速率限制
  2. 每批 1000 个请求,每个用户最多 100 个 -> 大量速率限制错误
  3. 每批 100 个请求,每个用户最多 100 个 -> 大量速率限制错误
  4. 每批 100 个请求,每个用户最多 50 个 -> 大量速率限制错误
  5. 每批 100 个请求,每个用户最多 10 个 -> 不再出错

我正在使用 quotaUser 参数来唯一标识批处理请求中的每个用户。

我检查了我的应用程序,以确认每个批次都不会超出时间。我还检查了每个批次是否不超过配置为获取的 file_id 的限制。一切正常。

我也会等待每批完成后再发送下一批。

每次看到超过 403 速率限制时,我都会进行指数退避。有时我必须在 9 步后重试,即等待 2**9 秒。

所以,我看不出 Google Drive API 限制的意义。我确定我的应用程序一切正常,但我无法提高每秒获取更多权限的限制。

【问题讨论】:

  • 不清楚每个用户是否有不同的文件,它们是否归用户或单个谷歌帐户所有,以及您是否使用用户的访问令牌或所有用户的相同令牌执行请求。
  • @ZigMandel 我很确定用户速率是由 UserIP 或 quotaUser 参数控制的,谁拥有该文件并不重要。这是我们可以测试的。
  • 您是否尝试过进入 Google Developers 控制台 API -> google Drive -> 配额并增加每用户限制?
  • 是的,我问的很重要。回答所有这些问题,也许我可以提供帮助
  • @ZigMandel 有 +7M 的唯一文件,还有很多用户之间共享的文件,但我的应用程序足够聪明,可以跳过它们。我使用相同的令牌代表每个域用户获取权限。

标签: google-api google-drive-api google-api-python-client


【解决方案1】:

我相信这是谷歌设置的限制,以阻止人们向服务发送垃圾邮件并将其捆绑。它与您的应用程序本身没有任何关系,但设置在 Google 服务器端。如果 Google 服务器在特定时间内收到超过特定数量的请求,这就是您得到的错误。您无法在您的应用程序中做任何事情来克服这个问题。您可以与 Google 讨论它,通常为 Google 许可证付费等可以让您在受到限制之前获得更高的限制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多