Gmail API错误429 rateLimitExceeded即使在没有任何活动的情况下也是如此

时间:2017-03-26 18:14:32

标签: gmail-api

我有一个与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控制台没有活动,我再次尝试,并得到同样的错误。

1 个答案:

答案 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请求的这些限制   "超出用户速率限制"返回错误并返回时间。   请注意,超出每日限制可能会导致这些类型   在接受请求之前的多个小时的错误,所以你的   客户端可以使用标准指数退避重试请求。

     

无法以任何理由增加这些每用户限制。