沒有一個開發人員願意把所有時間都花在繁瑣的任務上,例如係統維護和管理、日常資料庫備份以及定期下載文件和電子郵件。你更願意專注於有成效的工作,而不是追蹤這些煩人的瑣事何時需要完成。 【推薦學習:《nodejs 教學》】
這時就需要使用到任務排程,它將幫助您解決這樣的問題。
任務排程可讓您規劃任意程式碼(方法/函數)和指令在固定日期和時間、重複間隔或指定間隔後執行一次。在 Linux 作業系統中,任務調度通常由諸如 cron 之類的實用程式服務在作業系統層級處理。
在 Node.js 應用程式中,類似於 cron 的功能,我們可以使用 node-cron 這樣的套件實作。如同開發者所介紹的,node-cron 是基於 GNU crontab 的 node.js 純 JavaScript 中的微型任務調度器。
crontab 是 Linux 系統的定時任務執行器。 cron 的操作由 crontab 檔案驅動,該檔案是一個設定文件,其中包含 cron 守護程式的指令。 node-cron
模組讓我們可以使用完整的 crontab 語法在 Node 中調度任務。
推薦工具
crontab 編輯器:線上工具可以視覺化產生 crontab 的設定檔。
crontab 語法如下所示:
# ┌────────────── second (可选)
# │ ┌──────────── 分钟 (minute,0 - 59)
# │ │ ┌────────── 小时 (hour,0 - 23)
# │ │ │ ┌──────── 一个月中的第几天 (day of month,1 - 31)
# │ │ │ │ ┌────── 月份 (month,1 - 12)
# │ │ │ │ │ ┌──── 星期中星期几 (day of week,0 - 6) 注意:星期天为 0
# │ │ │ │ │ │
# │ │ │ │ │ │
# * * * * * *
登入後複製
允許的 cron 值包含以下內容。
欄位 | #值 |
---|
second | 0–59 |
#minute | ##0–59 |
hour
| 0–23 |
day of the month | 1–31 |
month
| #1–12(或月份簡寫Jan、Feb...) |
day of the week
| 0–7(或Jan、Feb...,0 或7 是星期日) |
#下面我们来看看它的一些用法和用例。
使用 node-cron
使用 npm
安装 node-cron
模块。
$ npm install --save node-cron
登入後複製
任务调度语法
cron.schedule(cronExpression: string, task: Function, options: Object)
登入後複製
选项
scheduled
:一个布尔值(boolean
),用于设置创建的任务是否已安排(默认值为 true
)。timezone
:用于任务调度的时区。有关有效值,可参考 moment-timezone。
看看下面的例子。
const cron = require('node-cron')
cron.schedule('5 * * * * *', () => {
console.log('每分钟在第 5 秒运行一个任务')
})
登入後複製
时间规范的位置 2、3、4、5 和 6 中的星号(*
)类似于用于时间划分的文件 glob 或通配符;它们分别指定每分钟、每小时、每月的每一天、每月和每周的每一天。
以下代码将在每天凌晨 5:30 运行。
const cron = require('node-cron')
cron.schedule('30 5 * * *', () => {
console.log('每天凌晨 5:30 运行任务')
})
登入後複製
任务调度提示和技巧
现在我们已经了解了基本知识,让我们做一些更有趣的事情。
假设您希望在每周五下午 4 点运行一项特定任务。代码如下所示:
const cron = require('node-cron')
cron.schedule('0 16 * * friday', () => {
console.log('每周五下午 4:00 运行任务')
})
登入後複製
或者,您可能需要每季度运行一次数据库备份。crontab 语法没有一个月的最后一天选项,因此您可以使用下个月的第一天,如下所示。
const cron = require('node-cron')
cron.schedule('2 3 1 1,4,7,10 *', () => {
console.log('在每个季度的第一天运行任务')
})
登入後複製
下面显示的任务在上午 10:05 到下午 6:05 之间每小时运行五分钟。
const cron = require('node-cron')
cron.schedule('5 10-18 * * *', () => {
console.log('在上午 10 点到下午 6 点之间每小时运行五分钟的任务')
})
登入後複製
在某些情况下,您可能需要每两小时、三小时或四小时运行一次任务。您可以通过将小时数除以所需的时间间隔来完成此操作,例如,每四小时 *4
,或在上午 12 点到下午 12 点之间每三小时运行 0-12/3
。
分钟也可以用同样的方法划分。例如,minutes
位置的表达式为 */10
,表示每10分钟运行一次任务。
下面的任务在上午 8 点到下午 5:58 之间每两小时运行五分钟。
const cron = require('node-cron')
cron.schedule('*/5 8-18/2 * * *', () => {
console.log('在上午 8 点到下午 5:58 之间每两小时运行一次任务。')
})
登入後複製
定时任务方法
在结束之前,让我们关注一下三个关键的定时任务方法。
开始任务
将 scheduled
选项值设置为 false
时,任务将被调度,但无法启动,即使 cron 表达式正在滴答作响。
要启动这样的任务,您需要调用 start
方法。
const cron = require('node-cron')const task = cron.schedule('*/5 8-18/2 * * *', () => {
console.log('在上午 8 点到下午 5:58 之间每两小时运行一次任务。')
})
task.start()
登入後複製
停止任务
如果需要停止任务运行,可以使用 stop
方法将 scheduled
选项设置为 false
。除非重新启动,否则不会执行该任务。
const cron = require('node-cron')const task = cron.schedule('*/5 8-18/2 * * *', () => {
console.log('在上午 8 点到下午 5:58 之间每两小时运行一次任务。')
})
task.stop()
登入後複製
销毁任务
destroy
方法停止任务并将其完全销毁。
const cron = require('node-cron')const task = cron.schedule('*/5 8-18/2 * * *', () => {
console.log('在上午 8 点到下午 5:58 之间每两小时运行一次任务。')
})
task.destroy()
登入後複製
以上便是 node-cron
的大部分功能,您应该使用这些功能来安排频繁运行的任务。
更多编程相关知识,请访问:编程视频!!
以上是Node.js中如何利用node-cron來調度任務?的詳細內容。更多資訊請關注PHP中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
-
2023-04-26 17:59:18
-
2023-04-26 17:47:48
-
2023-04-26 17:41:42
-
2023-04-26 17:37:05
-
2023-04-26 17:31:25
-
2023-04-26 17:27:32
-
2023-04-25 19:57:58
-
2023-04-25 19:53:11
-
2023-04-25 19:49:11
-
2023-04-25 19:41:54