Регулирование запросов к сторонним API при использовании облачных функций - PullRequest
2 голосов
/ 06 февраля 2020

Мы запускаем наш бэкэнд Node для функций Firebase, и нам приходится часто использовать сторонний API (HubSpot), скорость которого ограничена 100 запросами / 10 секунд.

Мы отправляем эти запросы в HubSpot из наших облачных функций, и зачастую мы превышаем ограничение скорости HubSpot во время кампаний или других скачков использования веб-сайта. Кроме того, поскольку все они являются запросами на запись для обновления данных в HubSpot, эти запросы не могут быть выполнены не по порядку.

Есть ли способ направить наши запросы в HubSpot, чтобы не превышать их предел скорости? Открыты для предложений, которые могут не обязательно включать облачные функции, хотя это было бы предпочтительным.

Примечание. Когда я говорю «дроссель», я имею в виду, что все запросы к HubSpot должны выполняться через go. Я пытаюсь добиться чего-то похожего на то, что делает метод газа Лоды *, если это имеет смысл.

Ответы [ 2 ]

0 голосов
/ 13 февраля 2020

В этом случае мы обычно сохраняем данные в базе данных, а затем передаем их в HubSpot закаленным способом (например, без превышения ограничения скорости), используя cron, который запускается каждую минуту. Для каждого элемента данных, который мы успешно передаем в HubSpot, мы помечаем его как «успех» в базе данных.

0 голосов
/ 06 февраля 2020

Облачные функции не могут быть ограничены по скорости. Он всегда будет пытаться обслуживать запросы и события так быстро, как они поступают. Но вы можете использовать Облачные задачи , чтобы создать очередь задач, чтобы распределить нагрузку на некоторую работу с течением времени, используя настроенное ограничение скорости . Очередь задач может предназначаться для другой функции HTTP . Это фактически делает вашу обработку асинхронной, но на самом деле это единственный механизм, который Google Cloud предоставляет вам для сглаживания нагрузки.

...