node cron,
没有一个开发者愿意把所有的时间都花在繁琐的任务上,比如系统维护和管理、日常数据库备份以及定期下载文件和邮件。你更喜欢专注于富有成效的工作,而不是跟踪这些烦人的琐事需要完成的时间。[推荐研究:《nodejs 教程》]
这时候你就需要使用任务调度,它会帮你解决这类问题。
任务调度使您能够安排任意代码(方法/功能)和命令在固定日期和时间、重复间隔或指定间隔后执行一次。在Linux操作系统中,任务调度通常由cron等实用服务在操作系统级处理。
在Node.js应用中,可以使用node-cron这样的包来实现类似cron的功能。正如开发者所介绍的,node-cron是一个基于GNU crontab的node.js纯JavaScript的微任务调度器。
Crontab是Linux系统的一个调度任务执行器。cron的操作由crontab文件驱动,crontab文件是一个包含cron守护进程指令的配置文件。node-cron模块允许我们使用完整的crontab语法在node中调度任务。
Crontab语法如下:
# ————————————————————第二(可选)
# ——————————————分钟数(分钟,0-59)
# 94
# 9
# ——————月(月,1-12)
#
#
#
# * * * * * *允许的cron值包括以下内容。
字段值秒059分钟059小时023一个月的第131天第112个月(或一月、二月.)一周中的第07天(或一月、二月.0或7是星期天)我们来看看。
使用 node-cron
使用npm安装node-cron模块。
$ NPM install-save node-cron
任务调度语法
cron . schedule(cron expression:string,task: function,options:object)
选项
scheduled:一个布尔值,用于设置所创建的任务是否已被调度(默认值为true)。时区:用于任务调度的时区。有关有效值,请参见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 * *星期五,()={
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点之间每小时运行5分钟的任务”)
})在某些情况下,您可能需要每两小时、三小时或四小时运行一次任务。您可以通过将小时数除以所需的时间间隔来实现这一点,例如,每四个小时*4,或者在上午12点到下午12点之间每三个小时运行0-12/3。
分钟也可以用同样的方法划分。比如分钟位置的表达式是*/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进行任务调度。更多详情请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。