Heim >Web-Frontend >js-Tutorial >Wie verwende ich Node-Cron, um Aufgaben in Node.js zu planen?

Wie verwende ich Node-Cron, um Aufgaben in Node.js zu planen?

青灯夜游
青灯夜游nach vorne
2021-08-25 10:13:433609Durchsuche

Wie verwende ich Node-Cron, um Aufgaben in Node.js zu planen?

Kein Entwickler möchte seine ganze Zeit mit mühsamen Aufgaben wie Systemwartung und -verwaltung, täglichen Datenbanksicherungen und regelmäßigen Downloads von Dateien und E-Mails verbringen. Sie konzentrieren sich lieber auf die produktive Arbeit, als darauf zu achten, wann diese lästigen Aufgaben erledigt werden müssen. [Empfohlenes Lernen: „nodejs Tutorial“]

Zu diesem Zeitpunkt müssen Sie Aufgabenplanung verwenden, um solche Probleme zu lösen.

Aufgabenplanungermöglicht Ihnen, beliebigen Code (Methoden/Funktionen) und Befehle so zu planen, dass sie einmal zu einem festen Datum und zu einer festen Uhrzeit, in einem wiederkehrenden Intervall oder nach einem bestimmten Intervall ausgeführt werden. In Linux-Betriebssystemen wird die Aufgabenplanung normalerweise auf Betriebssystemebene durch Dienstprogramme wie cron durchgeführt.

In Node.js-Anwendungen können cron-ähnliche Funktionen mithilfe von Paketen wie node-cron implementiert werden. Wie vom Entwickler vorgestellt, ist node-cron ein Mikrotask-Scheduler in reinem JavaScript für node.js, der auf GNU crontab basiert.

crontab ist ein geplanter Task-Executor für Linux-Systeme. Der Betrieb von Cron wird von der Datei crontab gesteuert, einer Konfigurationsdatei, die Anweisungen für den Cron-Daemon enthält. Mit dem Modul node-cron können wir Aufgaben in Node mithilfe der vollständigen Crontab-Syntax planen. 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 值包括以下内容。

crontab-Editor
字段
second 0–59
minute 0–59
hour 0–23
day of the month 1–31
month 1–12(或月份简写 Jan、Feb...)
day of the week
Empfohlene Tools
: Online-Tool kann eine Crontab-Konfigurationsdatei visuell generieren . 🎜🎜crontab-Syntax lautet wie folgt: 🎜
$ npm install --save node-cron
🎜Zulässige Cron-Werte umfassen Folgendes. 🎜🎜🎜 Sekunde🎜🎜0–59🎜🎜🎜Minute🎜🎜0–59🎜🎜🎜Stunde🎜🎜0–23🎜🎜 🎜Tag des Monats🎜🎜1–31🎜🎜🎜Monat🎜🎜1–12 (oder Monatsabkürzung Jan, Feb...) 🎜🎜🎜Wochentag🎜🎜0–7 (oder Jan, Feb..., 0 oder 7 ist Sonntag)🎜🎜🎜🎜

下面我们来看看它的一些用法和用例。

使用 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 的大部分功能,您应该使用这些功能来安排频繁运行的任务。

更多编程相关知识,请访问:编程视频!!

🎜field🎜 🎜value🎜

Das obige ist der detaillierte Inhalt vonWie verwende ich Node-Cron, um Aufgaben in Node.js zu planen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:juejin.cn. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen