Я работаю над приложением Laravel, используя Guzzle 6. Много функциональности зависит от API, из которых я создал оболочку для.
Мой обертка - это один класс, который создает клиент Guzzle в __construct()
и имеет множество публичных функций, которые возвращают ответы от запросов Guzzle.
API, который я использую, имеет ограничение в 40 запросов каждые 10 секунд. Я кеширую вещи, поэтому было бы очень редко ударить этот предел, но я хотел бы знать, что мое приложение не просто умрет, если бы оно это сделало!
Некоторые заметки о моем приложении:
- Вызов API производится только в том случае, если за последние 6 часов один и тот же вызов не был выполнен. Если это так, вызов никогда не выполняется, и ответ подается непосредственно из кэша redis.
- В большинстве случаев вызовы API выполняются с помощью действий пользователя. Приложение никогда не приблизилось бы к самому удару этих пределов.
- В большинстве случаев у меня уже есть требуемые данные, чтобы показывать запрошенные страницы пользователям. Вызов API может быть выполнен в фоновом режиме, чтобы увидеть, нужно ли обновлять что-либо в моем конце, но если у меня уже есть данные и запрос API не удался, это не сделает страницу бесполезной.
- Если вы хотите посмотреть, приложение будет жить, https://likethis.tv. Я использую API TMDb.
Итак, мой вопрос: как я должен удостовериться, что я не попал в этот предел? Несколько моих идей:
- Используйте систему очередей Laravel для размещения запросов Guzzle в очереди и обрабатывайте их только в том случае, если у нас остались запросы. Если нет, подождите, пока не вернется 10-секундный кулдаун...
- Используйте
HandlerStack
для Guzzle напрямую. Не уверен, возможно ли это, но раньше я использовалHandlerStack
для ответов кэширования.
Я пытаюсь не провоцировать слишком упрямые ответы, но я уверен, что, возможно, лучший и/или более простой способ, чем выше, или если они хорошие идеи, любые указатели или рекомендации были бы замечательными.
Спасибо заранее.