我正在尝试通过我们的服务获取大量用户的电子邮件。我首先得到一个消息列表,如果消息不在DataStore中,那么我们将获取它们。但是,我使用延迟库来避免DeadlineExceeded错误。目前的算法是:
然而,我意识到这也超过了速率限制,因为我可以做超过10次查询/秒。当我尝试一次只发送一条消息而不是10条消息时,包括获取消息列表(每个电子邮件页面都有1个网络请求),我收到一条错误消息,说我使用了太多内存而且我的进程是关掉。 什么是最好的算法,所以我可以确保我总是低于10 qps GMail,但没有内存耗尽?
答案 0 :(得分:1)
我不认为达到速率限制是一件大事,只要确保你处理错误并在这种情况下放慢一点。分批获取10条消息似乎很好。
答案 1 :(得分:0)
如果在您描述的场景中内存不足,则表示您的代码中存在内存泄漏或无限循环。可以在最小的实例上轻松处理10个查询。