web-dev-qa-db-fra.com

Existe-t-il une bibliothèque de planificateur de travaux pour node.js?

Existe-t-il une bibliothèque comme une bibliothèque qui me permettrait de programmer l'exécution d'une fonction à une heure donnée (15h30 par exemple, pas dans x heures à partir de maintenant, etc.)? S'il n'y a pas ce genre de bibliothèque, comment cela devrait-il être implémenté? Dois-je simplement définir le rappel pour qu'il soit appelé toutes les secondes et vérifier l'heure et démarrer les tâches planifiées pour l'heure ou quoi?

153
JtR

node-cron fait exactement ce que j'ai décrit

120
JtR

node-schedule Un planificateur de tâches similaire à Cron et non similaire à Cron pour Node.

43
Unitech

agenda est une planification de travail Lightweight pour le noeud. Cela vous aidera.

32
Fizer Khan

later.js est une assez bonne bibliothèque "planificateur" en JavaScript. Peut fonctionner sur Node.js ou dans un navigateur Web.

14

J'utilise kue: https://github.com/learnboost/kue . C'est joli Nice.

Les caractéristiques officielles et mes commentaires:

  1. travaux retardés.
    • Si vous souhaitez laisser le travail s'exécuter à une heure spécifique, calculez le nombre de millisecondes entre cette heure et maintenant. Appelez job.delay (millisecondes) (le doc dit minutes, ce qui est faux.) N'oubliez pas d'ajouter "jobs.promote ();" quand vous commencez des emplois.
  2. événement de travail et progrès pubsub.
    • Je ne comprends pas.
  3. riche interface intégrée.
    • Très utile. Vous pouvez vérifier le statut du travail (terminé, en cours d'exécution, différé) dans l'interface utilisateur intégrée sans avoir à écrire de code. Et vous pouvez supprimer les anciens enregistrements dans l'interface utilisateur.
  4. défilé interminable
    • Parfois ne fonctionne pas. Avoir à rafraîchir.
  5. Indication de progression de l’UI
    • Bon pour les travaux fastidieux.
  6. enregistrement spécifique à un travail
    • Comme il s’agit de travaux retardés, vous devez consigner des informations utiles dans le travail et vérifier plus tard via l’interface utilisateur.
  7. propulsé par Redis
    • Très utile. Lorsque vous redémarrez votre application node.js, tous les enregistrements de travaux sont toujours présents et les travaux planifiés sont également exécutés!
  8. tentatives facultatives
    • Agréable.
  9. capacités de recherche en texte intégral
    • Bien.
  10. API JSON RESTful
    • Ça sonne bien, mais je ne l'utilise jamais.

Modifier:

  1. kue n'est pas un cron comme une bibliothèque.
  2. Par défaut, kue ne prend pas en charge les tâches à exécution répétée (par exemple tous les dimanches).
11
Vince Yuan

node-crontab vous permet d'éditer des tâches cron système à partir de node.js. L'utilisation de cette bibliothèque vous permettra d'exécuter des programmes même après la fin de votre processus principal. Avertissement: je suis le développeur.

9
Blago

Vous pouvez utiliser timexe

Il est simple à utiliser, léger, sans dépendance, a une syntaxe améliorée sur cron, une résolution en millisecondes et fonctionne dans le navigateur.

Installer:

npm install timexe

Utilisation:

var timexe = require('timexe');
var res = timexe("* * * 15 30", function(){ console.log("It's now 3:30 pm"); });

(Je suis l'auteur)

8
Simon Rigét

Je suis l'auteur de node-runnr . Son approche est très simple pour créer des emplois. Aussi, il est très facile et clair de déclarer le temps et l’intervalle. Par exemple, pour exécuter un travail toutes les 10min 20s,

Runnr.addIntervalJob('10:20', function(){...}, 'myjob')

Faire un travail à 10h et 15h tous les jours,

Runnr.addDailyJob(['10:0:0', '15:0:0'], function(){...}, 'myjob')

C'est si simple. Pour plus de détails: https://github.com/Saquib764/node-runnr

2
codedemon

Toutes ces réponses et personne n’a fait référence au package NPM le plus populaire. Cron

https://www.npmjs.com/package/cron

1
danday74

Nous pouvons utiliser à la fois node-schedule et node-cron pour implémenter des ordonnanceurs basés sur cron.

[~ # ~] note [~ # ~] : pour générer des expressions cron, vous pouvez utiliser ceci cron_maker

1
dush88c

Cela ne conviendra pas à tout le monde, mais si votre application est déjà configurée pour prendre des commandes via un socket, vous pouvez utiliser netcat pour émettre des commandes via cron proprement dit.

echo 'mycommand' | nc -U /tmp/myapp.sock
0
Adria