我正在使用请求模块抓取网址列表并希望如此 将打开的套接字数量限制为2:
var req = request.defaults({
forever: true,
pool: {maxSockets: 1}
});
req(options, function(error, response, body) {
... code ...
done();
然而,当循环遍历一组URL并向每个URL发出新请求时 - 似乎不起作用。
有没有办法获得当前打开的套接字数量来测试它?
答案 0 :(得分:1)
我认为maxSockets
映射到http.Agent.maxSockets
,这会将的并发请求数限制为同一个来源(host:port
)。
request
的开发者的This comment建议相同:
实际上,池控制传递给核心的代理。每个代理都拥有所有主机并限制每个主机的maxSockets
换句话说,您通常不能使用它来限制并发请求的数量。为此,您需要使用外部解决方案,例如使用limiter
或async.queue
。