Y compris les temps d'attente en Node.js http.obtenez en mettre un grand nombre de téléchargements
C'est le code que j'utilise pour télécharger des images à partir de Url:
http.get(options, function (res) {
res.on('data', function (data) {
file.write(data);
}).on('end', function () {
file.end();
console.log(file_name + ' downloaded ');
cb(null, file.path);
}).on('error', function (err) {
console.log("Got error: " + err.message);
cb(err, null);
});
});
Comment puis-je ajouter un délai d'attente pour chaque demande, afin de ne pas rester en attente d'une réponse qui est soit de données de grande taille ou qui ne répond pas?
Sonne comme un bon plan. Qu'avez-vous essayé?
Utiliser ceci: nodejs.org/api/...
Mais comment dois-je utiliser avec l'objet de réponse ici???
Utiliser ceci: nodejs.org/api/...
Mais comment dois-je utiliser avec l'objet de réponse ici???
OriginalL'auteur user1386776 | 2012-10-09
Vous devez vous connecter pour publier un commentaire.
OK, il y a au moins deux solutions à votre problème. Facile:
mais peut-être pas assez souple. Le plus avancé:
var timeout = setTimeout( fn, 10000 );
doit être en dehors de lahttp.get
de rappel.Vous avez raison, fixe.
Quelles sont les limites de la première méthode?
Désolé, je n'ai pas vu votre commentaire est vraiment très longtemps. Asnwering la question: par exemple, vous pourriez vouloir changer le délai d'attente selon que vous avez reçu ou non des données. Ainsi, par exemple, après la réception de n'importe quel morceau de données d'étendre le délai d'attente. Peu probable que quelqu'un allait le faire, mais encore possible. 🙂
Salut, bien que cela fait plus d'un an, votre réponse est vraiment très utile pour moi. Cependant, il ya encore un problème je ne peut pas le comprendre par moi-même. C'est mon exemple jsfiddle.net/oe6freko . Je veux le rappel de req.setTimeout ne pas être appelé après le rappel de http.obtenir est appelé. Dans mon exemple, quand je traite avec de l'énorme quantité de demandes, peu de temps-il encore imprimer
req.abort is still excuted AFTER response is returned in callback function
. Pouvez-vous m'aider dans ce cas? Merci à l'avance.OriginalL'auteur freakish