Nous avons une demande d'API qui logins nos utilisateurs, comme ceci:Comment calculer le temps d'exécution dans NodeJS ChildProcess.exec
...
//lauches an API request
router.post("/trip/analyse",function(req,res){
t0 = Date.now();
shell = ("sudo /usr/bin/python /mypythonFile");
child = exec(shell, function (error, stdout, stderr) {
if (error) { //There is an error
res.json({"Error" : true});
console.log(Date.now() - t0); // <-------- HERE, How to get this right ?
}else{ //everything went fine
res.json({"Error" : false});
console.log(Date.now() - t0); // <-------- HERE, How to get this right ?
}
});
});
...
Je vois que le temps d'exécution imprimée n'est pas juste, parce que, quand de nombreux utilisateurs se connecter à en même temps, la valeur "t0" utilisée pour calculer l'executionTime ("Date.now() - t0") n'est pas correctement calculée. Il utilise les valeurs t0 d'un appel plus récent de cette requête API, et non la valeur t0 appropriée. Ceci est dû au fait que la méthode exec est asynchrone et prend du temps à s'exécuter.
Comment corriger correctement l'heure d'exécution ("Date.now() - t0"), où la variable t0 d'origine est perdue?
Pourquoi la variable est-elle globale? Ceci est probablement à l'origine de votre problème. Étendre les variables t0 etc. à la fonction ajoutant var avant. – mrdotb
Oh merci beaucoup !! ça l'a réparé !! – inconnu26