#javascript #reactjs #api #riot-games-api
Вопрос:
Я пытаюсь использовать riot-api для создания страниц статистики для разных игроков. Алгоритм работает после идентификации конкретного игрока, затем вызов api попытается извлечь около 15 игр. Затем я хочу повторить этот список из 15 игр, где для каждой игры мне нужно сделать еще один вызов api, чтобы получить данные, соответствующие конкретным игровым данным. Затем игровые данные сохраняются в облачном магазине firestore. Я предпочитаю получать около 15 игр одновременно, потому что api riot ограничивает количество вызовов 20 в секунду и 100 вызовов каждые 2 минуты. Проблема в том, что я слишком быстро выполняю весь алгоритм, и я получаю ошибку 429, потому что я достигаю предела. Есть ли способ замедлить скорость моих вызовов api, чтобы оставаться в окне, или есть лучший способ справиться с ошибкой 429, например, повторить попытку?
Комментарии:
1. Позволяет ли их API получать всю необходимую информацию в одном запросе вместо того, чтобы совершать несколько звонков для каждого игрока?
2. Почему бы не совершать новые вызовы только после того, как будет разрешен первый пакет?
Ответ №1:
Вы можете использовать облачные задачи для ограничения скорости ваших вызовов riot-api. Есть несколько способов добиться этого…
- Создайте вызываемую функцию (в Firebase) и используйте ее для записи ваших запросов, затем попросите функцию добавить их в HTTP-очередь облачных задач с ограничением скорости.
- Запишите данные в Cloud Firestore/ RTDB, который запускает Облачную функцию для добавления запросов в HTTP-очередь облачных задач с ограничением скорости.
Создайте другую облачную функцию HTTP (работник) для получения задач из очереди, вызовите riot-api и запишите данные в Cloud Firestore. Если вы получите сообщение об ошибке от riot-api, задача повторится. Облачные задачи автоматически снизят частоту повторных попыток, чтобы избежать перегрузки вашей конечной точки.