微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何调用 api 并保持在速率限制内反应 javascript

如何解决如何调用 api 并保持在速率限制内反应 javascript

我正在尝试使用 riot-api 为不同的玩家构建统计页面。 该算法在识别特定玩家后起作用,然后 api 调用将尝试获取大约 15 个游戏。然后我想遍历这个包含 15 个游戏的列表,对于每个游戏,我需要进行另一个 api 调用来拉取匹配特定游戏数据的数据。然后将游戏数据保存到云 Firestore。我选择一次获得大约 15 个游戏,因为 riot api 限制为每秒 20 个调用,每 2 分钟调用 100 个。问题是我完成所有算法的速度太快了,我收到了 429 错误,因为我达到了限制。有没有办法减慢我的 api 调用速度以保持在窗口中,或者有没有更好的方法来处理 429 错误,例如重试?

解决方法

您可以使用 Cloud Tasks 来限制对 riot-api 的调用。有几种方法可以实现这一点...

  1. 创建一个可调用函数(在 Firebase 中)并使用它来编写您的请求,然后让该函数将它们添加到具有速率限制的 Cloud Tasks HTTP queue
  2. 将数据写入 Cloud Firestore/RTDB,这会触发 Cloud Functions 将请求添加到具有速率限制的 Cloud Tasks HTTP 队列。

创建另一个 HTTP Cloud Function(工作线程)以从队列接收任务,调用 riot-api 并将数据写入 Cloud Firestore。如果您从 riot-api 收到错误,该任务将重试。 Cloud Tasks 会自动降低重试率,以避免端点过载。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。