node-schedule 设置定时任务

2024-11-15 10:12:41

node-schedule 是 Node.js 的一个 定时任务(crontab)模块。我们可以使用定时任务来对服务器系统进行维护,让其在固定的时间段执行某些必要的操作,还可以使用定时任务发送邮件、爬取数据等。

一. 安装

# 安装在项目 package.json 中 dependencies
npm install --save node-schedule

# 全局
npm install -g node-schedule

# yarn
yarn add node-schedule

二. 基础用法

使用 schedule.scheduleJob() 即可创建一个定时任务。

一个简单的示例:

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

// 当前时间的秒值为10时执行任务
const job = schedule.scheduleJob("10 * * * * *", () => {
  console.log(new Date());
});

时间数值表示意思:

*  *  *  *  *  *
┬  ┬  ┬  ┬  ┬  ┬
│  │  │  │  │  |
│  │  │  │  │  └ 星期几,取值:0 - 7,其中 0 和 7 都表示是周日
│  │  │  │  └─── 月份,取值:1 - 12
│  │  │  └────── 日期,取值:1 - 31
│  │  └───────── 时,取值:0 - 23
│  └──────────── 分,取值:0 - 59
└─────────────── 秒,取值:0 - 59(可选)

也可以指定一个具体的时间,如:

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

const date = new Date(2016, 6, 13, 15, 50, 0);
const job = schedule.scheduleJob(date, () => {
  console.log(new Date());
});

三. 进阶用法

除了基础的用法,我们还可以使用一些更为灵活的方法来实现定时任务。

比如,隔一段时间执行一次:

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

// 定义规则
const rule = new schedule.RecurrenceRule();
rule.second = [0, 10, 20, 30, 40, 50]; // 每隔 10 秒执行一次

// 启动任务
const job = schedule.scheduleJob(rule, () => {
  console.log(new Date());
});

rule 支持设置的值有 second、minute、hour、date、dayOfWeek、month、year 等。

1. 每分钟 0 秒执行

rule.second = 0;

2. 每小时 30 分执行

rule.minute = 30;
rule.second = 0;

3. 每天 0 点执行

rule.hour =0;
rule.minute =0;
rule.second =0;

4. 每月 1 号的 10 点执行

rule.date = 1;
rule.hour = 10;
rule.minute = 0;
rule.second = 0;

5. 每周一、周三、周五的 0 点和 12 点执行

rule.dayOfWeek = [1,3,5];
rule.hour = [0,12];
rule.minute = 0;
rule.second = 0;

四、取消任务

可以使用 cancel() 终止一个运行中的任务。

 job.cancel();

目录

相关推荐
nvm安装node,报Get "https://nodejs.org/dist/latest/SHASUMS256.txt" dial tcp 104.20.23.46:443i/o timeoutnpm install时,下载失败,报:network request to https://registry.nlark.com/yallist/download/yallist-2.1.2.tgz?Linux 平台中如何安装 nvm、git 等brew 如何安装 nginx