我正在尝试使用 riot-api 为不同的玩家构建统计页面。该算法在特定玩家被识别后起作用,然后一个 api 调用将尝试获取大约 15 个游戏。然后我想遍历这个包含 15 个游戏的列表,对于每个游戏,我需要进行另一个 api 调用来提取与特定游戏数据匹配的内容。然后将游戏数据保存到云 Firestore。我选择一次约 15 场比赛,因为 riot api 限制为每秒 20 个调用,每 2 分钟 100 个调用。问题是我通过所有算法的速度太快了,我收到了 429 错误,因为我达到了极限。有没有办法减慢我的 api 调用速度以保持在窗口中,或者有没有更好的方法来处理 429 错误,比如重试?
问问题
268 次
1 回答
0
您可以使用Cloud Tasks来限制对 riot-api 的调用。有几种方法可以实现这一目标......
- 创建一个可调用函数(在 Firebase 中)并使用它来编写您的请求,然后让该函数将它们添加到具有速率限制的Cloud Tasks HTTP 队列中。
- 将数据写入 Cloud Firestore/RTDB,这会触发 Cloud Function 以将请求添加到具有速率限制的 Cloud Tasks HTTP 队列。
创建另一个 HTTP Cloud Function(worker)以从队列接收任务,调用 riot-api 并将数据写入 Cloud Firestore。如果您从 riot-api 收到错误,该任务将重试。Cloud Tasks 将自动降低重试率以避免端点过载。
于 2021-05-09T20:06:21.443 回答