首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用nodejs下载大量文件?

如何使用nodejs下载大量文件?
EN

Stack Overflow用户
提问于 2019-04-11 02:16:05
回答 1查看 1.1K关注 0票数 0

我有一个全面的25000图像链接。我正在尝试使用nodejs request包将这些图像下载到本地。直到1400015000,它正在下载之后,我得到了下面的错误。

误差

代码语言:javascript
运行
AI代码解释
复制
{ Error: socket hang up
    at TLSSocket.onHangUp (_tls_wrap.js:1148:19)
    at Object.onceWrapper (events.js:313:30)
    at emitNone (events.js:111:20)
    at TLSSocket.emit (events.js:208:7)
    at endReadableNT (_stream_readable.js:1064:12)
    at _combinedTickCallback (internal/process/next_tick.js:139:11)
    at process._tickCallback (internal/process/next_tick.js:181:9)
  code: 'ECONNRESET',
  path: null,
  host: 'factory.jcrew.com',
  port: 443,
  localAddress: undefined }
internal/streams/legacy.js:59
      throw er; // Unhandled stream error in pipe.
      ^

Error: EMFILE: too many open files, open 'C:\sangram\fiverr\New folder\public\JCREWFCT\99105154564.png'

下载代码

代码语言:javascript
运行
AI代码解释
复制
var request = require('request');

var download = async function (uri, filename, callback) {
  await request.head(uri, function (err, res, body) {
    request(uri).pipe(fs.createWriteStream(filename)).on('close', callback);
    if(err) {
      console.log(filename);
      console.log(err);
    }
  });
};

await download(d.image_link_1, saveDir, function () {
});

有人能指点我一次下载这些文件需要做些什么吗?

EN

回答 1

Stack Overflow用户

发布于 2019-04-11 02:32:12

我看到的主要问题是存在一个EMFILE错误,应该通过排队处理openreaddir调用来适当地处理这个错误。为此请使用graceful-fs

大量异步请求可能遇到的另一个问题与池和允许的maxSockets有关。如果发生这种情况,请将池设置为false或适当设置maxSockets参数。或者,与其根据请求设置maxSockets,还可以设置http.globalAgent.maxSockets,例如:

代码语言:javascript
运行
AI代码解释
复制
var https = require('https');
https.globalAgent.maxSockets = 30000;

退房:https://github.com/request/request

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55630101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文