什么是 node-cron?
node-cron 是一个轻量级的 Node.js 库,它允许你使用 UNIX 系统中的 cron 表达式语法,按计划执行 JavaScript 函数。它非常适合自动化日常任务:如清理缓存、发送邮件、备份数据库或监控服务器。
为什么需要任务调度器?
在 Web 应用中,经常需要在特定时间执行代码,而不仅仅是在用户请求时。与使用外部服务(如服务器上的 cron)不同,node-cron 直接在 Node.js 进程内运行。这简化了部署,无需配置系统调度器,并且非常适合容器化应用(Docker、Kubernetes)。
安装
通过 npm 安装只需一条命令:
npm install node-cron安装后,库即可使用 —— 无需额外依赖。
主要功能
- 灵活的调度 —— 支持标准的 cron 模式(分钟、小时、天、月、星期几)。
- 启动与停止 —— 每个任务可以根据需要启动或停止。
- 错误处理 —— 可以设置回调函数来记录错误,而不会导致应用崩溃。
- 简单的语法 —— 只有两个方法:
schedule和validate。
JavaScript(Node.js)代码示例
让我们创建一个每分钟在控制台输出当前时间的任务:
const cron = require('node-cron');
// 任务每分钟执行一次:'* * * * *'
cron.schedule('* * * * *', () => {
console.log('任务已执行:', new Date().toLocaleString());
});
console.log('调度器已启动。按 Ctrl+C 退出。');更复杂的示例 —— 每天早上 8 点发送报告:
const cron = require('node-cron');
cron.schedule('0 8 * * *', () => {
console.log('发送每日报告...');
// 在这里调用发送邮件的函数
}, {
scheduled: true,
timezone: 'Europe/Moscow'
});检查 cron 表达式的正确性:
const isValid = cron.validate('*/5 * * * *');
console.log(isValid); // true何时使用 node-cron?
- 自动化备份 —— 每晚创建数据库转储。
- 定期清理 —— 删除过期的会话或临时文件。
- 监控 —— 检查服务可用性并发送警报。
- 邮件发送 —— 按计划发送邮件(例如,摘要)。
- 缓存更新 —— 在非高峰时段重建缓存。
node-cron 库适用于任何规模的项目 —— 从简单的脚本到微服务架构。它不需要外部依赖,即使在长时间运行下也能稳定工作。