来源:Node.js

定时任务

定时任务是指在预定的时间点或时间间隔内执行的任务或操作

它们是自动化执行特定逻辑的一种方式,可用于执行重复性的、周期性的或计划性的任务

定时任务常见于以下情况:

  • 执行后台任务,如数据备份、日志清理、缓存刷新等
  • 执行定期操作,如发送电子邮件提醒、生成报告、更新数据等
  • 调度任务和工作流:调度和协调复杂的任务和工作流程,通过设置任务之间的依赖关系

使用

依赖

node-schedule是一个能用cron表达式处理定时任务的库

1
pnpm install node-schedule

cron表达式

Cron表达式是一种用于指定定时任务执行时间的字符串表示形式,由6个或7个字段组成,每个字段表示任务执行的时间单位和范围

1
2
3
4
5
6
7
8
9
*    *    *    *    *    *    *
┬ ┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │ │ └── 年,一般用不到
│ │ │ │ │ └── 星期(0 - 6,0表示星期日)
│ │ │ │ └───── 月份(1 - 12)
│ │ │ └────────── 日(1 - 31)
│ │ └─────────────── 小时(0 - 23)
│ └──────────────────── 分钟(0 - 59)
└───────────────────────── 秒(0 - 59)
是否必需取值范围特殊字符
秒 Seconds[0, 59]* , - /
分钟 Minutes[0, 59]* , - /
小时 Hours[0, 23]* , - /
日期 DayofMonth[1, 31]* , - / ? L W
月份 Month[1, 12]或[JAN, DEC]* , - /
星期 DayofWeek[1, 7]或[MON, SUN]。若使用[1, 7]表达方式,1代表星期一,7代表星期日。* , - / ? L #
年 Year1970+- * /

每个字段可以接受特定的数值、范围、通配符和特殊字符来指定任务的执行时间

  • 数值:表示具体的时间单位,如1、2、10等
  • 范围:-连接起始和结束的数值,表示一个范围内的所有值,如1-5表示1到5的所有数值
  • 通配符:*表示匹配该字段的所有可能值,如*表示每分钟、每小时、每天等
  • 逗号:逗号,分隔多个数值或范围,表示匹配其中任意一个值,如1,3表示1或3
  • 步长:/表示步长,用于指定间隔的数值,如*/5表示每隔5个单位执行一次
  • 特殊字符:一些特殊字符能表示特定的含义,例如
    • ?用于替代日和星期字段中的任意值
    • L表示最后一天
    • W表示最近的工作日

代码