nodejs 定时任务的执行 node-cron node-schedule

setInterval 内置模块

Node.js 内置了一个定时器模块 setIntervalsetTimeout,可以帮助我们实现简单的定时任务。该方法接受两个参数:要执行的函数和时间间隔。示例代码如下:

// 使用 setTimeout 执行一次函数
setTimeout(() => {
  console.log("这是一个定时任务 - 一次性执行");
}, 1000); // 1秒后执行

// 使用 setInterval 每隔一段时间执行函数
const intervalId = setInterval(() => {
  console.log("这是一个定时任务 - 重复执行");
}, 2000); // 每2秒执行一次

// 清除定时任务
clearInterval(intervalId); // 停止重复执行

可以根据实际业务需要来修改执行的任务内容和时间间隔,从而实现定时任务。

但是,如果我想定义一个每天早上六点执行的任务,那使用 setInterval来实现是一件很痛苦的事情,这里推荐使用第三方库node-schedule,就可以轻松解决,实现各种复杂的任务调动。也可使用第三方库node-cron来解决简单的任务调动。

node-schedule第三方库

模块提供了一种更友好的 API 来设置定时任务,支持多种定时方式

安装

npm install node-schedule --save

使用

const schedule = require('node-schedule');

const rule = new schedule.RecurrenceRule();
rule.hour = 6; // 每天的第6小时执行
rule.minute = 0; // 每天的第0分钟执行

const job = schedule.scheduleJob(rule, () => {
  console.log('每天早上六点执行的任务');
});

参数详解

schedule.scheduleJob('* * * * * *', function(){
});

六个*依次代表 *表示每

  • hour: 一个数字,表示小时(0-23)。
  • minute: 一个数字,表示分钟(0-59)。
  • second: 一个数字,表示秒(0-59)。
  • date: 一个数字,表示日期(1-31)。
  • month: 一个数字,表示月份(0-11,其中 0 代表 1 月)。
  • dayOfWeek: 一个数字,表示一周中的某天(0-6,其中 0 代表星期天)。

例子

  • 每分钟的第30秒触发: 30 * * * * *
  • 每小时的1分30秒触发 :30 1 * * * *
  • 每天的凌晨1点1分30秒触发 :30 1 1 * * *
  • 每月的1日1点1分30秒触发 :30 1 1 1 * *
  • 每年的1月1日1点1分30秒触发 :30 1 1 1 1 *
  • 每周1的1点1分30秒触发 :30 1 1 * * 1

node-cron第三方库

安装

npm install node-cron --save

使用

const cron = require('node-cron');
cron.schedule('0 0 6 * * *', () => {
    console.log('每天早上六点执行的任务');
});

参数详解

cron.schedule('* * * * * *', () => {
});

Cron 表达式是一个字符串,由空格分隔的 6 或 7 个字段组成,用于指定任务的执行时间。这些字段分别代表:

  • 秒(可选,范围 0-59)

  • 分钟(0-59)

  • 小时(0-23)

  • 日期(1-31)

  • 月份(1-12 或 JAN-DEC)

  • 星期(0-7 或 SUN-SAT,其中 0 和 7 都代表星期天)

  • 年份(可选,通常省略)

  • 例子

  • 每分钟的第30秒触发: 30 * * * * *

  • 每小时的1分30秒触发 :30 1 * * * *

  • 每天的凌晨1点1分30秒触发 :30 1 1 * * *

  • 每月的1日1点1分30秒触发 :30 1 1 1 * *

  • 每年的1月1日1点1分30秒触发 :30 1 1 1 1 *

  • 每周1的1点1分30秒触发 :30 1 1 * 1 *

区别

node-cron是一个基于cron表达式的模块,cron表达式可以用来定义定期执行的规则,支持分钟、小时、天、周、月等粒度。node-cron使用起来比较简单,可以通过类似于命令行的方式定义定期执行的规则和要执行的任务。

node-schedule则是一个更加灵活的定时任务调度模块,可以通过人性化的时间表达方式定义定期执行的规则,支持秒、分、时、日、周、月等维度。node-schedule的使用更加灵活,可以处理复杂的定时任务调度场景,比如每周三执行一次,或者每个月最后一天执行一次。它还支持链式调用、取消定时任务等功能。

相关推荐

  1. nodejs 定时任务执行 node-cron node-schedule

    2024-04-20 16:58:04       48 阅读
  2. nodejs使用node-cron实现定时任务功能

    2024-04-20 16:58:04       69 阅读
  3. 【Spring Boot 3】【@Scheduled】多线程执行定时任务

    2024-04-20 16:58:04       56 阅读
  4. python自动定时任务schedule使用方法

    2024-04-20 16:58:04       53 阅读
  5. @Scheduled注解创建定时任务 3 种模式

    2024-04-20 16:58:04       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-20 16:58:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-20 16:58:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-20 16:58:04       82 阅读
  4. Python语言-面向对象

    2024-04-20 16:58:04       91 阅读

热门阅读

  1. C语言实现快速排序算法

    2024-04-20 16:58:04       27 阅读
  2. 某互联网公司c++面试题

    2024-04-20 16:58:04       39 阅读
  3. 软考系统架构设计师考试论文应试技巧

    2024-04-20 16:58:04       35 阅读
  4. CentOS服务器安装宝塔(图文详解)

    2024-04-20 16:58:04       39 阅读
  5. spring异步@Async方法request丢失的问题处理

    2024-04-20 16:58:04       31 阅读
  6. C++笔记打卡第16天 (类模版)

    2024-04-20 16:58:04       37 阅读
  7. 1207. 大臣的旅费

    2024-04-20 16:58:04       33 阅读
  8. python打印字符串与整数时发现的问题

    2024-04-20 16:58:04       35 阅读
  9. node項目的开发

    2024-04-20 16:58:04       29 阅读
  10. yarn的安装与配置

    2024-04-20 16:58:04       34 阅读