Как ограничить количество асинхронных вызовов в узле js?

#node.js #asynchronous #throttling

#node.js #асинхронный #регулирование

Вопрос:

Я пытаюсь ограничить количество асинхронных вызовов, которые я могу выполнять на сервере, до 1 вызова в секунду. Я посмотрел на async eachOfLimit, но не уверен, что это правильное решение.

Я ищу уже существующую библиотеку, которая бы обтекала модуль запроса и фактически ограничивала запросы до 1 в секунду. Я просто не знаю, как справиться с такой ситуацией, и я надеюсь на какой-то стандарт.

Комментарии:

1. npmjs.com/search ? q = дросселирование

Ответ №1:

Если вы используете, express вы можете использовать пакет express-rate-limit из npm. Использование ниже —

 const rateLimit = require("express-rate-limit");


app.enable("trust proxy"); // only if you're behind a reverse proxy (Heroku, Bluemix, AWS ELB, Nginx, etc)

const limiter = rateLimit({
  windowMs: 60 * 1000, // 1 minute
  max: 1 // limit each IP to 1 requests per windowMs
});

//  apply to all requests
app.use(limiter);
  

Комментарии:

1. Спасибо за ваше решение, как я могу добавить его в класс, содержащий асинхронные функции?

2. Не могли бы вы немного подробнее разъяснить свой вариант использования? Этот модуль позволит вам определять ограничения скорости на конечных точках. Ваши клиенты смогут вызывать API только на основе определенного вами ограничения. С клиента вы просто вызываете norma fetch на свой сервер.