我有一个与 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 控制台中没有任何活动,我再次尝试,得到了同样的错误。
我认为发生的情况是您同时提出了太多请求。您可以在中看到您的错误Gmail 每用户限制 https://developers.google.com/gmail/api/v1/reference/quota#gmail_per-user_limits。考虑使用指数退避 https://developers.google.com/drive/v3/web/handle-errors#exponential-backoff.
以下是您收到该错误的可能原因:
并发请求
Gmail API 强制执行每个用户的并发请求限制(在
除了每个用户的速率限制之外)。这个限制是所有人共享的
Gmail API 客户端访问给定用户并确保没有 API
客户端正在使 Gmail 用户邮箱或其后端服务器超载。
为单个用户发出多个并行请求或批量发送
大量请求可能会触发此错误——大量请求也可能会触发此错误
访问 Gmail 用户邮箱的独立 API 客户端数量
同时地。如果超出此限制,则会出现 HTTP 429 Too Many Requests
返回“用户并发请求过多”错误。你的客户
可以使用标准指数退避重试请求。
不能以任何理由增加此每用户限制。
其他原因可能包括:
邮件发送限制
Gmail API 强制执行标准的每日邮件发送限制(这些限制)
付费 G Suite 用户与免费 gmail.com 用户的限制有所不同)。
这些限制是针对每个用户的,并且由所有用户的客户端共享,
无论是 API 客户端、本机/Web 客户端还是 SMTP MSA。如果这些限制
超出 HTTP 429 Too Many Requests“超出用户速率限制”
返回提及“(邮件发送)”的错误并给出重试时间。
请注意,超出每日限制可能会导致这些类型的
在请求被接受之前几个小时出现错误,因此您的
客户端可以使用标准指数退避重试请求。
这些每用户限制不能以任何理由增加。
邮件发送管道很复杂:一旦用户超出了他们的
配额,API 开始之前可能会有几分钟的延迟
返回 429 错误响应。所以你不能假设 200
回复表示邮件已成功发送。
带宽限制
该 API 对每用户上传和下载带宽有限制
等于但独立于 IMAP。这些限制相当慷慨
并在给定用户的所有 Gmail API 客户端之间共享。
这些限制通常仅在异常或滥用情况下才会达到
情况。如果超出这些限制,则会出现 HTTP 429 Too Many Requests
返回“超出用户速率限制”错误并指定重试时间。
请注意,超出每日限制可能会导致这些类型的
在请求被接受之前几个小时出现错误,因此您的
客户端可以使用标准指数退避重试请求。
这些每用户限制不能以任何理由增加。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)