Node.js 中使用 node-cron 进行定时任务管理的完整教程

阅读时长 5 分钟读完

在 Node.js 开发中,经常需要执行一些定时任务,例如定时备份、定时爬取数据等。而 node-cron 是一个非常方便易用的定时任务管理模块,支持 cron 表达式和时间间隔两种方式设置定时任务触发时间。本文将详细介绍如何使用 node-cron 实现定时任务管理。

1. 安装和引入 node-cron

通过 npm 安装 node-cron:

在项目中引入 node-cron:

2. 使用 cron 表达式

2.1 cron 表达式格式

cron 表达式是一种时间表达式,用于表示定时任务的触发时间。cron 表达式由 6 个字段组成,分别对应秒、分、时、日、月、星期。每个字段可以是一个数字、一个范围、一个列表或者一个通配符。

字段 允许值 允许的特殊字符
0-59 , - * /
0-59 , - * /
0-23 , - * /
1-31 , - * ? / L W
1-12 , - * /
星期 0-6 , - * ? / L #

cron 表达式示例:

-- -------------------- ---- -------
- -- -- ---
- -- - - - 

- --- - ---
- - - - -

- -- - - - ---
- - - - -

- -----
- - - - -
展开代码

2.2 设置定时任务

使用 cron.schedule() 方法设置定时任务。此方法接收一个 cron 表达式和一个回调函数,回调函数将在定时任务对应的时间触发。例如:

上述代码表示每天 12 点执行一次,输出 "定时任务执行成功!"。

3. 使用时间间隔

除了使用 cron 表达式,node-cron 还支持使用时间间隔来设置定时任务。例如:

上述代码表示每 5 秒执行一次,输出 "每 5 秒执行一次!"。

4. 更多参数

cron.schedule() 方法还支持其他参数,如:

  • timezone:设置时区,默认为系统默认时区。
  • scheduled:是否启用定时任务,默认为 true。
  • task:与回调函数相同,用于指定回调任务。

例如:

-- -------------------- ---- -------
---------------- -- - - --- -- -- -
  -------------------------
-- -
  --------- ----------------
  ---------- ------
  ----- -- -- -
    --------------------------
  -
---
展开代码

上述代码表示每天 12 点执行一次,时区为 Asia/Shanghai,不启用定时任务,同时还指定了一个额外的回调任务,输出 "这是另一个回调任务!"。

5. 错误处理

如果出现了错误,node-cron 会自动捕获并打印错误信息。除此之外,还可以通过监听 error 事件来处理错误,例如:

上述代码表示每分钟执行一次,但会出现错误。当错误发生时,将输出 "定时任务出现了错误:"加上错误信息。

6. 示例代码

下面是一个完整的示例代码,展示了如何使用 node-cron 执行定时任务:

-- -------------------- ---- -------
----- ---- - ---------------------

----- ---- - -- -- -
  -------------------------
--

---------------- -- - - --- ----- -
  --------- ----------------
  ---------- ------
  ----- -- -- -
    --------------------------
  -
--
------------ --- -- -
  ------------------------- -------------
---

------------------ - - - - --- -- -- -
  -------------- - ---------
---

---------------- - - - --- -- -- -
  ----- --- ------------------
---
展开代码

上述代码表示:

  • 每天 12 点执行一次,但不启用定时任务,还指定了一个额外的回调任务。
  • 每 5 秒执行一次。
  • 每分钟执行一次,但会出现错误,并捕获错误信息。

通过以上实例,我们可以轻松学习 node-cron 的使用并在开发中应用此模块来进行定时任务的管理。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67cfb918e46428fe9eb99c9e

纠错
反馈

纠错反馈