Вот что я пытаюсь сделать: я перебираю файл json, полный ссылок нашего веб-сайта, используя цикл for (около 3000 ссылок), внутри цикла я делаю аксиос для каждой ссылки и получаю код статуса ответа (буду делать другие вещи в будущем). Мой код застревает при случайной итерации. Иногда на 125-й ссылке, иногда на 178, иногда на 300. Моя консоль просто сидит без ошибок
Похоже, что в некоторых случайных ссылках запрос get занимает слишком много времени, как мне пропустить ссылку, которая занимает слишком много времени, или, может быть, я могу установить тайм-аут для каждого запроса get, и если ничего не возвращается в это определенное время, пропустить итерация
Я пытался поставить 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)
}