我们有一个使用Gmail API访问Gmail中电子邮件的应用程序。
我们随机得到以下错误消息
谷歌。API。请求。RequestError Rate Limit Excessed[超过429]错误[消息[超过速率限制]位置[-]原因[超过速率限制]域[使用权限]]
然后我们在错误事件代码中重试,并得到
谷歌。API。请求。RequestError后端错误[500]错误[消息[后端错误]位置[-]原因[后端错误]域[全局]]
然后,我们在错误事件代码中重试(我们尝试了3次),并按预期工作。
这里的Gmail API后端有一些问题。我们正在制作
还有其他人遇到这种奇怪的行为吗?
下面是正在调用的代码
UsersResource.MessagesResource.GetRequest gr = gs.Users.Messages.Get(emailAccount, msgId);
{
gr.Format = UsersResource.MessagesResource.GetRequest.FormatEnum.Raw;
Message m = new Message();
try
{
m = gr.Execute();
}
}
如果有人想知道为什么他们的速率会受到限制,那么也要知道带宽限制大约为750mb/小时或2500mb/天。此限制在连接到该用户帐户的所有应用程序(IMAP、POP、API)之间共享。我相信,即使是Gmail的使用也会影响这一点。如果其他应用程序正在消耗用户配额,您的应用程序将收到相同的速率限制。
Gmail API具有相同的每日使用限制,适用于应用程序发出的所有请求,以及每个用户的速率限制。
超过速率限制(变快)将导致HTTP 403或HTTP 429请求响应过多,您的应用程序应通过指数后退重试来响应。
500个错误是服务器打嗝,服务器需要很长时间才能响应,因此它超时了您的请求。此解决方案与上述错误的解决方案相同,您应该实施指数退避并重试。
指数退避是网络应用程序的一种标准错误处理策略,在这种策略中,客户端会在不断增加的时间内定期重试失败的请求。如果大量请求或繁重的网络流量导致服务器返回错误,那么指数退避可能是处理这些错误的好策略。相反,它不是处理与速率限制、网络容量或响应时间无关的错误的相关策略,例如无效的授权凭据或未找到文件的错误。
如果使用得当,指数退避可以提高带宽使用效率,减少获得成功响应所需的请求数,并最大限度地提高并发环境中请求的吞吐量。
实现简单指数退避的流程如下所示。
在我的jenkins工作中,我得到这个错误为我的bot用户。我的限制是5000,我看到每秒钟大约有100个请求,我不确定哪个工作/服务正在使用机器人的请求。理想情况下,我的其他jenkins工作应该每分钟最多占用1个请求。 有没有办法找出是什么导致了如此高的请求率?或者任何API调用来列出在最后一分钟内进行的所有API调用或类似的东西?
我们正在使用Google的Admin SDK API。当我们执行超过2个线程向谷歌服务器发出批量请求时,我们会遇到很多403(超过速率限制)错误。 我们在项目管理面板中更改了每秒请求的速率限制,但似乎没有效果。正如谷歌在https://developers.google.com/admin-sdk/directory/v1/limits我们已尝试使用每个线程一个用户的凭据。 我们每秒可以发送多少个
我检索用户的照片使用管理sdk在java。我也实现了指数退避。 但在几次请求之后,我得到了403个错误代码和速率受限的异常消息。 有2000名用户和10至20名用户的照片。它开始给出403错误,并使用指数回退,这需要很长时间才能执行。 有人能给我一些关于这个问题的建议吗。?
我有一个java Spring应用程序在AWS C4上运行。大(4 Gb内存)与Apache Tomcat 8.我得到java.lang.OutOfMemoryError GCOverhead限制超过错误,同时在服务器启动期间实例化30000条记录的bean。 引起原因:org.springframework.beans.BeanInstantiation异常:未能实例化[java.lang.字符
我正在使用quarkus.rest客户端调用外部API,并希望将这些调用的频率限制在每秒50次,这样我就不会淹没外部服务。在没有侧车方法的情况下(通过代码),推荐的实现方法是什么?
我正在使用SpringWebFlux和netty构建一个微服务。在内部,我使用web客户端进行RESTAPI调用。如何控制通过webclient调用RESTAPI的速率?我猜backnpressure只适用于单个请求/回复,不适用于对我的微服务的多个请求。Amy pointers将不胜感激。谢谢