Mastering Node Cron: Scheduling Tasks and Automations in Node.js
Welcome to our comprehensive guide on node-cron, a powerful tool for scheduling tasks in Node.js. Whether you’re managing routine database backups, sending periodic emails, or automating any repetitive task, node-cron
makes scheduling a breeze.
What is Node Cron?
Node-cron is a flexible Node.js module that allows you to run tasks periodically based on a Cron syntax.
Installing Node Cron
npm install node-cron
Basic Usage
A simple cron job that runs a task every minute:
const cron = require('node-cron');
cron.schedule('* * * * *', () => {
console.log('Task runs every minute');
});
Advanced Scheduling
Schedule a task to run at a specific time:
const cron = require('node-cron');
cron.schedule('0 7 * * 1', () => {
console.log('Running a task at 7:00 on every Monday');
});
Running a Task Every Day at Midnight
const cron = require('node-cron');
cron.schedule('0 0 * * *', () => {
console.log('Running a task every day at midnight');
});
Scheduling a Task with a Specific Time Zone
const cron = require('node-cron');
const tz = 'America/New_York';
cron.schedule('0 17 * * FRI', () => {
console.log('Task runs every Friday at 5:00 PM New York time');
}, {
timezone: tz
});
Cron Validations
const cron = require('node-cron');
if (cron.validate('59 59 23 31 12 *')) {
console.log('Valid cron expression');
} else {
console.log('Invalid cron expression');
}
Stopping a Scheduled Task
const cron = require('node-cron');
let task = cron.schedule('* * * * *', () => {
console.log('This task will stop after three executions');
});
setTimeout(() => {
task.stop();
}, 180000); // Stop task after 3 minutes
App Example
Let’s create a Node.js app that sends a reminder email every Monday at 9 AM:
const cron = require('node-cron');
const nodemailer = require('nodemailer');
// Create a mail transporter
let transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'your-email@gmail.com',
pass: 'your-email-password'
}
});
// Schedule the email sending task
cron.schedule('0 9 * * MON', () => {
let mailOptions = {
from: 'your-email@gmail.com',
to: 'recipient-email@gmail.com',
subject: 'Weekly Reminder',
text: 'This is your weekly reminder email!'
};
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
console.log(error);
} else {
console.log('Email sent: ' + info.response);
}
});
});
console.log('Email scheduling app is running...');
With this setup, you can automate the sending of weekly reminder emails, making it easier to manage repetitive tasks.
Stay tuned for more automation tricks and tips with node-cron and Node.js!
Hash: b4ba5abd2d3cfc5f36b64e34cc8aabf071514e1a34eedf04fb34a0f0ab7d1cd2