Planificateur de tâches sur Node.js : node-schedule et node-cron

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Planificateur de tâches sur Node.js : node-schedule et node-cron



Dans le développement web moderne, il est souvent nécessaire d'effectuer certaines actions à un moment donné ou à intervalles réguliers. Par exemple, l'envoi de rapports par email, le nettoyage de la base de données, l'analyse de ressources externes ou la mise à jour du cache. Dans l'environnement Node.js, des planificateurs de tâches sont utilisés à ces fins. Les deux outils les plus populaires sont node-schedule et node-cron. Dans cet article, nous analyserons les deux en détail, fournirons des exemples de code et vous aiderons à choisir celui qui convient à votre projet.



Pourquoi un planificateur de tâches dans Node.js ?

Node.js est un environnement monothread avec une architecture orientée événements. Les fonctions intégrées setTimeout et setInterval permettent d'exécuter du code avec un délai ou périodiquement, mais elles ne conviennent pas aux scénarios complexes :

  • Pas de flexibilité dans la configuration (par exemple, « tous les deuxièmes lundis du mois à 10h30 »).
  • Ne conservent pas l'état après un redémarrage de l'application.
  • Difficultés de gestion (annulation, modification du planning).

Les planificateurs résolvent ces problèmes en fournissant une API simple pour créer, lancer et annuler des tâches planifiées.



Bibliothèque node-schedule

node-schedule est un planificateur flexible basé sur une syntaxe de type cron, mais avec des fonctionnalités avancées. Il permet de définir des tâches récurrentes avec une précision à la minute, ainsi que des tâches ponctuelles à une date spécifique.



Installation

npm install node-schedule


Fonctionnalités principales

  • Prise en charge des expressions cron (6 champs : secondes, minutes, heures, jour du mois, mois, jour de la semaine).
  • Possibilité de définir une exécution unique avec un objet Date.
  • Règles récurrentes avec l'objet RecurrenceRule.
  • Méthodes cancel() et cancelNext() pour la gestion des tâches.


Exemple 1 : Lancement d'une tâche toutes les 5 minutes

const schedule = require('node-schedule');

const job = schedule.scheduleJob('*/5 * * * *', function() { console.log('La tâche s\'exécute toutes les 5 minutes :', new Date().toLocaleString());});

// Annuler la tâche après 20 minutessetTimeout(() => { job.cancel(); console.log('Tâche annulée');}, 20 * 60 * 1000);


Exemple 2 : Tâche à une date spécifique

const schedule = require('node-schedule');

const date = new Date(2025, 5, 15, 10, 30, 0); // 15 juin 2025, 10:30:00

const job = schedule.scheduleJob(date, function() { console.log('Tâche unique exécutée le', new Date().toLocaleString());});

console.log('Tâche planifiée au', date.toLocaleString());


Exemple 3 : Règle récurrente complexe

const schedule = require('node-schedule');

const rule = new schedule.RecurrenceRule();rule.dayOfWeek = [1, 3, 5]; // Lundi, mercredi, vendredirule.hour = 9;rule.minute = 0;

const job = schedule.scheduleJob(rule, function() { console.log('La tâche s\'exécute à 9h00 en semaine (Lun, Mer, Ven)');});


Bibliothèque node-cron

node-cron est une alternative légère basée sur le cron classique des systèmes Unix. Elle est plus simple à utiliser, mais moins flexible que node-schedule. Elle prend en charge 5 champs (minutes, heures, jour du mois, mois, jour de la semaine).



Installation

npm install node-cron


Fonctionnalités principales

  • Syntaxe cron standard (5 champs).
  • Méthodes start(), stop(), destroy().
  • Prise en charge des fuseaux horaires via l'option timezone.
  • Possibilité de lancer une tâche immédiatement avec now().


Exemple 1 : Lancement d'une tâche chaque jour à minuit

const c                    

Recommendations