web-dev-qa-db-fra.com

Définir l'intervalle dans Node.js vs Cron Job?

J'apprends node.js et je viens de configurer une machine virtuelle Linux vide et un nœud installé.

J'exécute une fonction constamment chaque minute

var request = require('request')
var minutes = 1, the_interval = minutes * 60 * 1000

setInterval(function() {
    // Run code
  })
}, the_interval);

Et envisager d'ajouter d'autres fonctions en fonction de l'heure actuelle. - (par exemple, exécuter la fonction si dateTime = dimanche à midi)

Ma question est la suivante: y a-t-il des inconvénients à exécuter une configuration comme celle-ci par rapport à une configuration cron traditionnelle?

Gardez à l'esprit que je dois exécuter cette fonction dans le nœud toutes les minutes de toute façon.

33
Philip Kirkbride

Cela dépend de la rigueur avec laquelle vous devez respecter cet intervalle de minutes et si votre script de nœud fait autre chose entre-temps. Si la seule chose que le script fait est d'exécuter quelque chose tous les X, je considérerais fortement que votre script de nœud fasse X à la place, et le planifie en utilisant la méthode appropriée planificateur de système d'exploitation.

Si vous construisez et exécutez cela dans le nœud, vous devez gérer le cycle de vie de l'application et vous assurer qu'elle fonctionne, récupérer des plantages, etc. Le simple fait d'exécuter une fois par minute via CRON est beaucoup plus simple et, à mon avis, est davantage conforme à la - Philosophie Unix .

19
Timothy Strimple

Ma question est la suivante: y a-t-il des inconvénients à exécuter une configuration comme celle-ci par rapport à une configuration cron traditionnelle?

Aussi longtemps que //run the code n'est pas une chose liée au CPU comme la cryptographie, restez avec un processus à 1 nœud, au moins pour commencer. Puisque vous avez besoin de request je suppose que vous pourriez faire une requête HTTP, qui est IO, ce qui signifie que ce sera bien.

Il est juste plus simple d'avoir 1 chose à installer/lancer/démarrer/arrêter/mettre à niveau/connecter un débogueur que de gérer un serveur d'application ainsi qu'un processus séparé géré par cron. Pour ce qu'il vaut, le garder en javascript le rend portable sur toutes les plateformes, bien que cela n'ait probablement pas vraiment d'importance.

Il y a aussi un module node-cron pratique que j'ai utilisé ainsi qu'environ un milliard d'autres alternatives.

32
Peter Lyons