【发布时间】:2019-11-22 00:17:20
【问题描述】:
我需要从服务器下载 10'000 多张图片。为此,我编写了这个小脚本。
const http = require('http')
const fs = require('fs')
const opt = {
agent: new http.Agent({
keepAlive: true,
maxSockets: 5
}),
headers: {
'user-agent': 'foo'
}
}
for (let i = 0; i < 10000; i++) {
http.get(`http://www.example.com/${i}.png`, opt, (res) => {
console.log(i)
if (res.statusCode !== 200) return
res.pipe(fs.createWriteStream(`resource/${i}.png`))
})
}
问题在于,过了一会儿我得到Error: read ECONNRESET 或Error: socket hang up
我已经设置了keepAlive: true和maxSockets: 5
我唯一的解释是服务器有某种 DOS 保护并阻止了我的请求?
知道如何解决这个问题吗?我需要实施“冷却”吗?
【问题讨论】:
-
你可以使用
setInterval,这样页面就不会挂起。
标签: javascript node.js file download