本教程操作环境:linux7.3系统、node18.4.0版、Dell G3电脑。node怎么实现定时任务?node定时任务(node-schedule模块)实现一个每天凌晨十二点更新服务器上的git代码的功能koa2框架下的app.js文
本教程操作环境:linux7.3系统、node18.4.0版、Dell G3电脑。
node怎么实现定时任务?
node定时任务(node-schedule模块)
import schedule from 'node-schedule';
import updateCode from './controllers/hcpLan/fetch'
const app = new Koa();
const router = new Router();
router.get( '/', (ctx, next) => {
ctx.body = 'hello'
});
app.use(router.routes()).use(router.allowedMethods());
let rule = new schedule.RecurrenceRule()
rule.hour = 0
rule.minute = 0
rule.second = 0
schedule.scheduleJob(rule, () => {
updateCode.cloneRepo();
console.log('代码更新了!');
})
app.listen(3000)
node-schedule原理:利用setTimeOut和event事件进行管理,对所有加入的事件进行排序,并且计算当前时间和最近一个事件发生时间的时间间隔,然后调用setTimeOut设置回调。总的来说分两种事件,一种是一次性的,一种是周期性的,一次性任务调用完就结束,周期性的会不断地循环调用,当一个周期性事件被调用后,会根据周期生成下一个周期任务,并添加到任务列表中,重新排序。每个任务调用结束,都会计算并准备下一个任务。
一、设置定时器
node-schedule允许多种规则去实现定时
1. Cron风格定时器
* * * * * *
┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │ |
│ │ │ │ │ └ 一周的星期 (0 - 7) (0 or 7 is Sun)
│ │ │ │ └───── 月份 (1 - 12)
│ │ │ └────────── 月份中的日子 (1 - 31)
│ │ └─────────────── 小时 (0 - 23)
│ └──────────────────── 分钟 (0 - 59)
└───────────────────────── 秒 (0 - 59, OPTioNAL)
var schedule = require('node-schedule');
//当分钟为42时,执行一个cron任务
var j = schedule.scheduleJob('42 * * * *', function(){
console.log('执行了!');
});
2.Date对象规则定时器
var schedule = require('node-schedule');
var date = new Date('2017-09-26 22:00:00');
var j = schedule.scheduleJob(date, function(){
console.log('执行了!');
});
3.RecurrenceRule实例规则定时器
var schedule = require('node-schedule');
var rule = new schedule.RecurrenceRule();
rule.minute = 42;
var j = schedule.scheduleJob(rule, function(){
console.log('执行了!');
});
具体使用可查看GitHub文档https://github.com/node-schedule/node-schedule
以上就是node怎么实现定时任务的详细内容,更多请关注编程网其它相关文章!
--结束END--
本文标题: node怎么实现定时任务
本文链接: https://www.lsjlt.com/news/173463.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2023-05-25
2023-05-25
2023-05-25
2023-05-25
2023-05-25
2023-05-24
2023-05-24
2023-05-24
2023-05-24
2023-05-24
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0