Как сделать контроллер недоступным на время?

У меня есть контроллер который при поступлении запроса делает очень долгую операцию. И мне надо его заблокировать на это время(выдавать ошибку при обращении на него). Должно получится что-то вроде этого.

app.get(
//1) Поступил первый запрос 
//2) Длинная I/O операция 
//3) Поступил второй запрос выбрасваем ошибку(обработчик недоступен) 
//4)Длинная I/O операция закончилась 
//5) Мы снова можем принимать запросы
)

С помощью чего такое можно сделать?


Ответы (1 шт):

Автор решения: nörbörnën

Решение в лоб:

let hardLoadingOpFlag;

app.get('/endpoint', (req, res) => {
  if (hardLoadingOpFlag === true) {
    return res.status(429);
  }

  hardLoadingOpFlag = true;
  
  hardLoadingOp()
    .finally(() => {
      hardLoadingOpFlag = false;
    });
});
→ Ссылка