这是我想做的事情:我使用for循环(约3000个链接)遍历一个包含我们网站链接的json文件,在循环内我为每个链接执行axios获取并获取响应状态代码(将来还会做其他事情)。我的代码被卡在随机迭代中,有时在第125个链接上,有时在178上,有时在300上。我的控制台坐在那里,没有错误
似乎在某些链接上,随机的获取请求花费的时间太长,我该如何跳过花费时间太长的链接,或者我可以为每个获取请求设置超时,如果在特定时间内没有任何返回,则跳过该请求迭代?
我尝试将try catch放到任何地方,没有日志记录,我也尝试使用blubird map而不是loop,这是同一笔交易,任何人都知道发生了什么吗?
var cheerio = require('cheerio');
var axios = require('axios');
const fs = require('fs');
var four04 = "404";
var statusCheck = 0;
var main = [];
let rawdata = fs.readFileSync('C:/Users/jay/Documents/crawl/filtered.json');
let jsonParsed = JSON.parse(rawdata);
async function makeRequests (lines) {
for (const line of lines) {
try {
const encodedLink = encodeURI(line.link)
statusCheck =statusCheck+1
console.log(encodedLink +" : "+ statusCheck)
const response = await axios.get(encodedLink)
console.log(response.status)
} catch (error) {
var Status_ErrorsCatch = {
"status Code": error.response.status ? error.response.status : "No status code available",
"Page title:": $('title').text() ? $('title').text() : 'No title avaialble',
"Original Link": encodedLink ? encodedLink : "No Original Link Available",
}
main.push(Status_ErrorsCatch)
}
}
}
try {
makeRequests(jsonParsed)
} catch (error) {
console.log("whole function error",error)
}