我有几个图像列表来源(闪烁,图像存储在s3,imgur等)
我想得到这些图像的尺寸。
我使用节点和https://github.com/nodeca/probe-image-size遍历每个网址并使用它来获取图片的宽度,并通过以下代码计算一定宽度的图片数量
probes = [];
_.forEach(image_urls, url => {
probes.push(probe(url));
});
results = await Promise.all(probes);
_.forEach(results, result_of_image => {
width = parseInt(result_of_image.width / 10) * 10;
if (!widthes[width]) {
widthes[width] = 1;
} else {
widthes[width]++;
}
});
即使所有网址都可以访问,我有时会得到getaddrinfo ENOTFOUND
堆栈
at ClientRequest.req.once.err (/image_script/node_modules/got/index.js:73:21)
at Object.onceWrapper (events.js:293:19)
at emitOne (events.js:101:20)
at ClientRequest.emit (events.js:191:7)
at TLSSocket.socketErrorListener (_http_client.js:358:9)
at emitOne (events.js:96:13)
at TLSSocket.emit (events.js:191:7)
at connectErrorNT (net.js:1031:8)
at _combinedTickCallback (internal/process/next_tick.js:80:11)
at process._tickDomainCallback (internal/process/next_tick.js:128:9)
我怀疑因为url列表非常大(成千上万)节点只占用系统的所有资源而且事情就停止了正常工作(这是猜测)
有没有更好的方法来做到这一点?或者为节点提供一些连接池?