Node.js中如何利用node-cron来调度任务?

Node.js中如何利用node-cron来调度任务?

没有一个开发人员愿意把所有时间都花在繁琐的任务上,比如系统维护和管理、日常数据库备份以及定期下载文件和电子邮件。你更愿意专注于富有成效的工作,而不是跟踪这些烦人的琐事何时需要完成。【推荐学习:《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 值包括以下内容。

字段

second0–59minute0–59hour0–23day of the month1–31month1–12(或月份简写 Jan、Feb…)day of the week0–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来调度任务?的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2634037.html

(0)
上一篇 2025年3月7日 04:27:42
下一篇 2025年1月4日 00:10:28

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 深入了解Node.js中的4种 stream

    本篇文章带大家了解一下node.js中的4种 stream,看看怎么解决爆缓冲区的“背压”问题,有需要的朋友可以去学习了解一下~ 把一个东西从 A 搬到 B 该怎么搬呢? 抬起来,移动到目的地,放下不就行了么。 那如果这个东西有一吨重呢? …

    2025年3月7日 编程技术
    200
  • 聊聊Node.js Buffer中的encoding(编码)

    本篇文章带大家了解一下node.js buffer中的encoding,希望对大家有所帮助! 计算机最小的单位是一个位,也就是 0 和 1,在硬件上通过高低电平来对应。但是只有一位表示的信息太少了,所以又规定了 8 个位为一个字节,之后数字…

    2025年3月7日
    200
  • nodejs是做什么的

    nodejs是能够在服务器端运行JavaScript的开放源代码、跨平台运行环境;Node.js采用Google开发的V8运行代码,使用事件驱动、非阻塞和异步输入输出模型等技术来提高性能,可优化应用程序的传输量和规模。 本文操作环境:win…

    2025年3月7日
    200
  • 浅析Node.js api的 POSIX 标准

    posix 是什么?有哪些内容?下面本篇文章带大家了解一下node.js api的 posix 标准、node.js api的特点,希望对大家有所帮助! 【推荐学习:《nodejs 教程》】 如果你用过 Node.js 的 api,会不会觉…

    2025年3月7日
    200
  • 聊聊利用Node.js 的多线程能力怎么做异步计算

    怎么做异步计算?下面本篇文章给大家介绍一下利用浏览器和 node.js 的多线程能力做异步计算的方法,希望对大家有所帮助! 都说 Node.js 可以实现高性能的服务器,那什么是高性能呢? 所有的软件代码最终都是通过 CPU 来跑的,能不能…

    2025年3月7日
    200
  • 怎么利用Node.js查看操作系统及其版本号

    怎么利用node.js查看操作系统及其版本号?下面本篇文章给大家介绍一下node.js中判断操作系统、获取windows和mac系统的node.js版本号的方法。 获取操作系统 在 Node.js 中判断操作系统是非常简单的,用 proce…

    2025年3月7日
    200
  • 浅谈利用Node.js如何获取WI-FI密码

    利用node.js如何获取wi-fi密码?下面本篇文章给大家介绍一下使用node.js获取wi-fi密码的方法,希望对大家有所帮助! 【推荐学习:《nodejs 教程》】 演示效果 全局安装wifi-password-cli依赖 npm i…

    2025年3月7日
    200
  • 浅谈使用node.js怎么搭建本地服务器

    使用node.js怎么搭建本地服务器?下面本篇文章就来给大家介绍一下node.js搭建本地服务器的方法,希望对大家有所帮助! node.js是基于JavaScript的一门后端语言,前端小伙伴儿可以很快上手,并自己搭建一个本地的服务器。一起…

    2025年3月7日 编程技术
    200
  • 深入了解Node.js中的异步编程,分享四种解决方案

    有异步i/o,必有异步编程!今天来学习node.js里的异步编程! 异步编程概述 曾经的单线程模型在同步I/O的影响下,由于I/O调用缓慢,在应用层面导致CPU与I/O无法重叠进行。为了照顾编程人员的阅读思维习惯,同步I/O盛行了很多年。【…

    2025年3月7日 编程技术
    200
  • nodejs怎么安装gulp

    安装方法:1、下载并安装Nodejs;2、配置npm的全局路径;3、打开“Node.js command prompt”命令行,执行“npm install –g gulp”命令即可全局安装gulp。 本教程操作环境:windows7系统、…

    2025年3月7日
    200

发表回复

登录后才能评论