Как сделать контроллер недоступным на время?
У меня есть контроллер который при поступлении запроса делает очень долгую операцию. И мне надо его заблокировать на это время(выдавать ошибку при обращении на него). Должно получится что-то вроде этого.
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;
});
});