-1

riot-api を使用して、さまざまなプレイヤーの統計ページを作成しようとしています。このアルゴリズムは、特定のプレーヤーが識別された後に機能し、API 呼び出しは約 15 のゲームを取得しようとします。次に、この 15 のゲームのリストを反復処理します。各ゲームについて、特定のゲーム データに一致するプルする別の API 呼び出しを行う必要があります。その後、ゲーム データはクラウド ファイアストアに保存されます。riot API は 1 秒間に 20 回の呼び出し、2 分ごとに 100 回の呼び出しに制限されているため、一度に約 15 のゲームを取得することにしました。問題は、すべてのアルゴリズムの処理が速すぎて、制限に達しているため 429 エラーが発生することです。ウィンドウ内にとどまるために API 呼び出しの速度を遅くする方法はありますか、または再試行などの 429 エラーに対処するより良い方法はありますか?

4

1 に答える 1

0

Cloud Tasksを使用して、riot-api への呼び出しをレート制限できます。これを達成するにはいくつかの方法があります...

  1. Callable Function を (Firebase で) 作成し、これを使用してリクエストを書き込みます。次に、この関数でリクエストをレート制限付きのCloud Tasks HTTP キューに追加します。
  2. データを Cloud Firestore / RTDB に書き込みます。これにより、Cloud Function がトリガーされ、リクエストが Cloud Tasks HTTP キューにレート制限付きで追加されます。

別の HTTP Cloud Function (ワーカー) を作成して、キューからタスクを受け取り、riot-api を呼び出して、データを Cloud Firestore に書き込みます。riot-api からエラーを受け取った場合、タスクは再試行されます。Cloud Tasks は、再試行の頻度を自動的に減らして、エンドポイントの過負荷を回避します。

于 2021-05-09T20:06:21.443 に答える