【问题标题】:Does Batching Google Drive API Requests Help Mitigate RateLimitExceeded Errors?批处理 Google Drive API 请求是否有助于减轻 RateLimitExceeded 错误?
【发布时间】:2021-05-14 10:05:26
【问题描述】:

我们的应用程序目前对 Google Drive API 进行了大量调用,以检索更改、权限、文件等。目前我们正在努力解决 403 rateLimitExceeded 错误。

根据文档here,有两种解决方案:

  1. 批处理请求。
  2. 使用指数退避重试请求。

我们希望实施批处理以帮助减少错误。但是,根据文档here

一起批处理的一组 n 个请求计入您的使用限制,作为 n 个请求,而不是一个请求。批处理请求在处理之前被分解为一组请求。

我想我的问题是,作为单个批次的一部分的一组 n 个请求是否仍算作达到速率限制的 n 个请求?这意味着如果一个批次包含的请求数与触发 403 rateLimitExceeded 的请求数一样多,是否仍会返回该错误?

非常感谢任何帮助。

【问题讨论】:

    标签: google-drive-api rate-limiting


    【解决方案1】:

    是的,确实,单个批次上的 n 个请求集计为 n 个请求,达到使用率限制。除了您在问题中提到的注释外,文档的其他部分(例如 this one)描述了以下内容:

    当服务器接收到批处理请求时,它会将外部请求的查询参数和标头(视情况而定)应用于每个部分,然后将每个部分视为单独的 HTTP 请求。

    从前面的注释信息中可以清楚地看出,批处理请求中的每个请求都算作一个单独的请求,因此会受到速率限制。

    但是,如果您收到错误 403 : rate limit exceed,则问题不在于您发出的请求总数,而是您发出请求的速度(可能在太短的时间内太多)。这就是为什么它建议您使用exponential backoff(如果您发送它们太快,脚本会在一定的等待时间后尝试发回请求)或使用batch requests(您每次最多只能发送100个请求)批处理,它减少了服务器的开销)。

    我建议您将两者结合使用。如果您需要发出多个批处理请求(因为您要发出超过 100 个请求),我建议您对这些批处理请求使用指数退避。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-18
      • 1970-01-01
      • 2023-02-09
      • 2012-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多