0

我正在使用请求模块来抓取 URL 列表,并希望将打开的套接字数量限制为 2:

var req = request.defaults({
   forever: true,
   pool: {maxSockets: 1}
});

req(options, function(error, response, body) {

 ... code ...

 done();

但是,当遍历一组 URL 并向每个 URL 发出新请求时,这似乎不起作用。

有没有办法获取当前打开的套接字数量来测试它?

4

1 回答 1

1

我相信maxSockets映射到http.Agent.maxSockets,这将并发请求的数量限制在同一来源host:port)。

来自 的开发者的这条评论request暗示了同样的观点:

实际上,池控制传递给核心的代理。每个代理持有所有主机并限制每个主机的 maxSockets

换句话说,一般不能用它来限制并发请求的数量。为此,您需要使用外部解决方案,例如使用limiteror async.queue

于 2017-07-20T12:36:23.490 回答