Demande: https://www.npmjs.com/package/requestNode.js async.queue se bloque lors de la création de requêtes http avec le module de requête npm. Affiche une
Je ne parviens pas à en demandant une énorme quantité de sites (10000
à la fois) avec le module de demande dans une file d'attente. Cela fonctionne par exemple pour 250 ou plus. Cependant, lorsque je fournis un csv
de quelque chose près de 300
ou plus, le script se bloque et le q.drain
ne se déclenche jamais vraiment. code:
program.command('sanitizedata <file> <outfile>').description('Sanitize Data').action((file, outfile) => {
if(file !== '' && outfile != '') {
var request = require("request");
var parse = require('url-parse');
csv({noheader:false, trim:true})
.fromFile(file)
.on('end_parsed', function(SitesArray) {
var possibleUrls = [];
var q = async.queue(function (task, done) {
var parsed = parse(task.url);
if(parsed.protocol == '') {
task.url = 'http://' + task.url;
task.host = parsed.pathname;
}
var options = {
url: `${task.url}`,
headers: {
'User-Agent': 'request',
'Host': `${task.host}`
}
};
request(options , function(err, res, body) {
if (err) return done(err);
if (res.statusCode != 200) return done(res.statusCode);
done(res);
});
}, 5);
SitesArray.map(function(site, index) {
q.push(site, function(result) {
if(result.statusCode == 200) {
delete site['host'];
console.log('\x1b[42m\x1b[37m%s\x1b[0m \x1b[46m\x1b[37m%s\x1b[0m', `Assert Success:${site.url}`, `${index}`);
possibleUrls.insert(site.index, site);
} else {
console.log('\n\r' + result)
return false;
}
});
});
q.drain = function() {
var csvOutput = toCSV(possibleUrls);
console.log('draining')
fs.outputFile(`./data/sanitizedata/${outfile}`, csvOutput, function(err) {
if(err) {
return console.log(err);
}
console.log(`The file ${outfile} was saved!`);
process.exit();
});
console.log('all items have been processed');
}
});
}}
);
Quelque part près de la dernière demande, il affiche une erreur ETIMEDOUT (connection timed out)
. J'ai données au format csv ..
index,url
...
...
9993,supercircusspectacular.com
9994,theleadershipnetwork.com
9995,wizardofozthemusical.com
9996,allnews365.com
9997,blog.vendhq.com
9998,businesspropertynetwork.co.uk
9999,dashboardjunkie.com