网站管理员 API v3:使用批量请求获取 servingLimitExceeded

Webmaster API v3: getting servingLimitExceeded using batch requests

我收到 servingLimitExceeded 批次内结果的错误消息,而不是整个批次的结果。例如,我可能会收到 100 条记录响应此错误,然后它开始返回更多结果。全部在一个批次内。

如果批次由 Google API 内部处理,我如何调整它们以不达到速率限制?我尝试在批次之间添加 1 秒的延迟,但这并没有改变这一点。我还在 Ruby 客户端上设置了 retries = 3,但我不知道这是否意味着它会重试失败的批次。我认为它不会重试批处理中的单个 API 调用,因为回退应该可以解决这个问题。

我是否必须记录失败的结果并创建一个新批次来单独恢复这些结果?

顺便说一下,documented quota limit errors 令人困惑。有 dailyLimitExceededrateLimitExceeded 消息,但这不会返回其中之一。 "The overall rate limit specified for the API has already been reached" 的 servingLimitExceeded 描述并不是很有帮助,但我 假设 这是我们达到的速率限制。

更新

查看代码,我发现 ruby google-api-client 中的重试仅适用于 transmission and authorization (401) errors. A 403 (which is what rate limit returns) raises a ClientError,无论如何都不会重试。

因此在客户端对象上设置 retries 与此无关。

我可以做些什么来在批处理中解决这个问题吗?

我们收到来自网站管理员团队的消息,称 API 限制为 20QPS,目前无法提高。

一个建议的解决方案是 make smaller batch requests