node-cron — Node.js 任务调度器

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

什么是 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 库适用于任何规模的项目 —— 从简单的脚本到微服务架构。它不需要外部依赖,即使在长时间运行下也能稳定工作。

推荐