@Emanue1

Реализовать очередь обработки запросов node.js?

При обращении на порт запускается довольно ресурсозатратная штука - electron.js. Если одновременно десять человек обратятся на этот порт, то сервер упадёт (денег на более мощный нет). Мне необходимо, чтобы если десять человек обратились на порт, то создалась бы очередь обработки этих запросов и они бы обрабатывались поочерёдно. То есть вообщем если в данный момент обрабатывается уже один запрос, то все остальные находятся в ожидании. Подскажите как это реализовать?

var http = require("http");

http.createServer(function(request, response){
	//тут запуск электрона
});
    response.end();
}).listen(8080);
  • Вопрос задан
  • 949 просмотров
Пригласить эксперта
Ответы на вопрос 2
@htmldeveloper
Сделайте может асинхронность на сервере. Помимо основного процесса, который должен запускать электрон, создайте процесс-воркер, а также разверните временное хранилище - редис самый лучший вариант всегда. Основной процесс принимает запрос по http от клиента, возвращает ему статус "202 Accepted", а в тело ответа помещает ключ "Location", который содержит ссылку на ресурс, по которому клиент сможет отслеживать процесс выполнения какой-то ресурсоемкой операции (запуск электрона) по определенному урлу (например "/resource/:id/"). Также сервер сладирует в редис таску, помечает как-то, и вот эти таски уже шерстит в свою очередь воркер, или воркеры, запущенные через cluster из nodejs API. Они делают всю работу уже - запускают электрон, как все сделалось - помечает таску как выполненную. Клиент запрашивает ресурс - /resource/1926, 1926 таска готова, все ок.
Ответ написан
Комментировать
hahenty
@hahenty
('•')
Самое простое, через setTimeout - интерпретатор сам рассуёт эти запросы в свою очередь таймеров.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы