我有一个与Gmail API集成的NodeJS应用程序。 当我尝试访问Gmail API时,出现此错误:
{
"error": {
"errors": [
{
"domain": "usageLimits",
"reason": "rateLimitExceeded",
"message": "User-rate limit exceeded. Retry after 2017-03-26T18:15:52.102Z"
}
],
"code": 429,
"message": "User-rate limit exceeded. Retry after 2017-03-26T18:15:52.102Z"
}
}
我等了一段时间,然后再试一次,并得到同样的错误。 我等了几个小时,看到API控制台没有活动,我再次尝试,并得到同样的错误。
答案 0 :(得分:2)
我认为发生的事情是你在同一时间提出太多请求。您可以在Gmail Per-User Limits中看到错误。考虑使用exponential backoff。
这些是您收到错误的可能原因:
并发请求
Gmail API强制执行每用户并发请求限制(在 除了每用户速率限制外)。所有人都共享此限制 Gmail API客户端访问给定用户并确保没有API 客户端正在重载Gmail用户邮箱或其后端服务器。
为单个用户发送许多并行请求或发送批次 有大量请求可以触发此错误 - 因为可以大 访问Gmail用户邮箱的独立API客户端数量 同时。如果超出此限制,则会发出HTTP 429 Too Many请求 "太多并发请求用户"错误被返回。你的客户 可以使用标准指数退避重试请求。
无法以任何理由增加此每用户限制。
其他原因可能包括:
邮件发送限制
Gmail API会强制执行标准的每日邮件发送限制(这些限制) 支付G Suite用户和免费gmail.com用户的限制不同。
这些限制是按用户划分的,并由所有用户的客户共享, 无论是API客户端,本机/ Web客户端还是SMTP MSA。如果这些限制 超出HTTP 429太多请求"超出用户速率限制" 错误提及"(邮件发送)"返回时间重试。 请注意,超出每日限制可能会导致这些类型 在接受请求之前的多个小时的错误,所以你的 客户端可以使用标准指数退避重试请求。
无法以任何理由增加这些每用户限制。
邮件发送管道很复杂:一旦用户超过了他们 配额,API开始前可能有几分钟的延迟 返回429错误回复。所以你不能假设一个200 响应表示电子邮件已成功发送。
带宽限制
API具有每用户上传和下载带宽限制 等于,但独立于IMAP。这些限制非常慷慨 并在给定用户的所有Gmail API客户端中共享。
这些限制通常仅在例外或滥用中受到限制 的情况。如果超出HTTP 429 Too Many请求的这些限制 "超出用户速率限制"返回错误并返回时间。 请注意,超出每日限制可能会导致这些类型 在接受请求之前的多个小时的错误,所以你的 客户端可以使用标准指数退避重试请求。
无法以任何理由增加这些每用户限制。