Как получить количество текущих открытых сокетов в Node?
Я использую модуль запроса для сканирования списка URL-адресов и хотел бы ограничить количество открытых сокетов до 2:
var req = request.defaults({
forever: true,
pool: {maxSockets: 1}
});
req(options, function(error, response, body) {
... code ...
done();
однако при циклическом просмотре массива URL-адресов и выдаче нового запроса каждому - это, похоже, не работает.
Есть ли способ получить текущее количество открытых сокетов, чтобы проверить это?
1 ответ
Я полагаю, что maxSockets
карты для http.Agent.maxSockets
, который ограничивает количество одновременных запросов одним и тем же источником (host:port
).
Этот комментарий от разработчика request
, предлагает то же самое:
на самом деле, пул управляет агентом, переданным ядру. каждый агент содержит все хосты и регулирует maxSockets для каждого хоста
Другими словами, вы не можете использовать его для ограничения количества одновременных запросов в целом. Для этого вам нужно использовать внешнее решение, например, используя limiter
или же async.queue
,