Qu'est-ce que node-schedule ?
node-schedule est une bibliothèque flexible pour la planification de tâches (de type cron) dans l'environnement Node.js. Elle permet d'exécuter des fonctions JavaScript/TypeScript selon un calendrier, en utilisant la syntaxe cron, des intervalles ou des dates spécifiques. La bibliothèque est idéale pour créer des tâches d'arrière-plan, des notifications périodiques, le nettoyage de données et d'autres processus automatisés.
Pourquoi utiliser node-schedule ?
Dans les applications web, il est souvent nécessaire d'exécuter du code non pas à la demande de l'utilisateur, mais selon un horaire. Par exemple : l'envoi de rapports quotidiens, l'archivage de logs, la vérification de l'état des serveurs. node-schedule fournit un moyen simple et fiable de réaliser cela sans systèmes de files d'attente complexes. Contrairement à setInterval, elle prend en charge les planifications cron complexes et tient compte des fuseaux horaires.
Installation
Installez la bibliothèque via npm ou yarn :
npm install node-schedule# ouyarn add node-schedulePour TypeScript, installez également les types :
npm install @types/node-schedule --save-devFonctionnalités principales
- Planifications cron : Prise en charge de la syntaxe cron standard (minutes, heures, jours, mois).
- Annulation de tâches : Possibilité d'annuler une exécution planifiée.
- Tâches uniques : Exécution à une date spécifique.
- Tâches récurrentes : Répétition à intervalle fixe.
- Gestion des erreurs : Prise en charge intégrée des callbacks pour les erreurs.
Exemple de code en TypeScript
import * as schedule from 'node-schedule';
// Tâche : toutes les minutesconst job = schedule.scheduleJob('*/1 * * * *', () => { console.log('Tâche exécutée à :', new Date().toISOString());});
// Tâche unique dans 10 secondesconst date = new Date(Date.now() + 10000);schedule.scheduleJob(date, () => { console.log('Tâche unique');});
// Annulation de la tâche après 30 secondessetTimeout(() => { job.cancel(); console.log('Tâche annulée');}, 30000);
// Tâche avec une règle récurrenteconst rule = new schedule.RecurrenceRule();rule.hour = 14;rule.minute = 30;schedule.scheduleJob(rule, () => { console.log('Tâche à 14h30 chaque jour');});Quand l'utiliser
node-schedule est idéal pour :
- Utilitaires d'arrière-plan : nettoyage de fichiers temporaires, sauvegardes.
- Notifications : envoi d'e-mails ou de notifications push selon un calendrier.
- Surveillance : vérification périodique de l'état de santé des services.
- Intégrations : synchronisation avec des API externes via cron.
N'utilisez pas node-schedule pour des tâches nécessitant une haute précision (millisecondes) ou une exécution distribuée (pour cela, les files d'attente comme Bull ou RabbitMQ sont plus adaptées).
La bibliothèque est légère, ne nécessite pas de dépendances externes et fonctionne parfaitement avec Express, NestJS ou Node.js pur.
Aussi dans la bibliothèque
Tests en C++ : aperçu des frameworks et outils (Google Test, Catch2, doctest)
Génération de PDF en Kotlin : aperçu des bibliothèques et outils
Sarama Go : guide complet avec exemples pratiques