Node.js: Cron 任务

使用 cron 任务在 Node.js 中有效地自动化任务

👋 欢迎查阅 Stackhero 文档!

Stackhero 提供即开即用的 Node.js 云环境,助您高效开发:

  • 只需一次简单的 git push几秒钟即可部署到生产环境,无需额外工具或手动配置。
  • 支持自定义域名,并自动配置 HTTPS 证书,让您的应用安全无忧,无需额外设置。
  • 自动备份一键升级以及可预测的定价,让您专注于功能开发,基础设施交由 Stackhero 托管。
  • 基于专属私有基础设施,保障性能稳定与高水平安全。

节省时间,降低运维负担:只需几分钟,您的应用即可在 Stackhero 的 Node.js 云主机 上运行。

在开发 Node.js 应用程序时,自动化重复性任务(如发送计划邮件、清理过期数据或执行定期维护)可以显著提高效率和可扩展性。cron 模块可在 npm 上获取(cron 模块在 npm 上),提供了一种简单有效的方法来实现这种自动化。

注意:虽然 node-cron npm 模块是另一个可用于 cron 任务的工具,但本指南专注于 cron 模块及其实现。

要在项目中使用 cron 模块,请通过执行以下命令将其作为依赖项包含:

npm install cron

模块安装后,您可以开始在应用程序中调度和管理 cron 任务。以下是一个实际示例:

const cron = require('cron');
const cronJobs = [];

// 优雅地处理应用程序关闭,通过停止所有计划的 cron 任务。
// 在部署新代码或关闭应用程序时,会发送终止信号(SIGTERM)。
// 这确保应用程序在退出前停止所有正在运行的 cron 任务。
process.on('SIGTERM', () => {
  cronJobs.forEach(cronJob => cronJob.stop());
});

// 调度一个每秒执行的 cron 任务。
cronJobs.push(
  new cron.CronJob(
    '* * * * * *', // 调度:每秒
    () => {
      console.log("此消息将每秒出现。");
    },
    null,
    true
  )
);

// 调度一个每分钟执行的 cron 任务。
cronJobs.push(
  new cron.CronJob(
    '0 */1 * * * *', // 调度:每分钟
    () => {
      console.log("此消息将每分钟出现。");
    },
    null,
    true
  )
);

cron 模块使用标准 UNIX cron 语法来定义调度。以下是一些常见示例:

  • 每秒: * * * * * *
  • 每30秒: */30 * * * * *
  • 每10分钟: 0 */10 * * * *
  • 每2小时: 0 0 */2 * * *

您现在可以使用 cron 模块在 Node.js 应用程序中自动化任务。有关更详细的信息和示例,请访问官方 cron 模块库并查看示例目录