nodejs模块 node-schedule使用,定时任务

58 篇文章 16 订阅
57 篇文章 34 订阅

一. 安装

npm install node-schedule

二. 使用

例子通过定时访问url展示
首先引入2个模块和访问的方法:
var http     = require('http');
var schedule = require("node-schedule");
function httpGet(){
   var uri = `http://120.25.169.8/before/index`;
  http.get(uri, function(res) { 
    console.log("访问个人微博状态码: " + res.statusCode); 
  }).on('error', function(e) { 
    console.log("个人微博 error: " + e.message); 
  });
}

1. 确定的时间执行

比如: 2016年7月13日15:50:00 , new Date() 的时候月份要减1.
var date = new Date(2016,6,13,15,50,0);
schedule.scheduleJob(date, function(){
  httpGet();
});
运行结果:

2. 秒为单位执行

比如:每5秒执行一次
var rule1     = new schedule.RecurrenceRule();
var times1    = [1,6,11,16,21,26,31,36,41,46,51,56];
rule1.second  = times1;
schedule.scheduleJob(rule1, function(){
  httpGet();
});
运行结果:


3.以分为单位执行

比如:每5分种执行一次
var rule2     = new schedule.RecurrenceRule();
var times2    = [1,6,11,16,21,26,31,36,41,46,51,56];
rule2.minute  = times2;
schedule.scheduleJob(rule2, function(){
  httpGet();
});
运行结果:


有500尴尬请忽略,不小心把数据库关掉了.

4.以小时为单位执行

比如:每4小时执行一次
var rule3     = new schedule.RecurrenceRule();
var times3    = [1,5,9,13,17,21];
rule3.hour  = times3; rule1.minute = 0;
schedule.scheduleJob(rule3, function(){
  httpGet();
});

以小时的就不贴运行结果了.时间太久

5.Cron风格


schedule.scheduleJob('5 * * * * *', function(){
  httpGet();
});
这个代码的意思就是每分钟的5秒这个点执行


比较坑的就是如果项目中有定时任务的时候,开启多线程模式就会执行多次,不管是这个模块还是使用 setInterval,有能解决的大神请留言. 
  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
使用 `node-schedule` 模块可以很方便地测试一个时间是否满足 cron 表达式。 首先需要安装 `node-schedule` 模块,可以使用以下命令进行安装: ``` npm install node-schedule ``` 接下来,可以使用 `schedule.cronJob()` 方法创建一个 cron 任务,并设置它的 cron 表达式。然后,可以使用 `job.nextInvocation()` 方法获取下一次任务执行的时间,或者使用 `job.pendingInvocations()` 方法获取未来若干个执行时间。 以下是一个示例代码: ```javascript const schedule = require('node-schedule'); // 创建一个 cron 任务 const job = schedule.cronJob('0 0 * * * *', function() { console.log('执行任务'); }); // 获取下一次任务执行的时间 console.log(job.nextInvocation().toString()); // 判断一个时间是否满足 cron 表达式 const date = new Date('2022-01-01T00:00:00Z'); // 设置一个时间 if (job.schedule(date)) { console.log(`${date} 满足 cron 表达式`); } else { console.log(`${date} 不满足 cron 表达式`); } ``` 在上面的示例中,创建了一个 cron 任务,它的 cron 表达式为每秒执行一次。然后使用 `nextInvocation()` 方法获取了下一次任务执行的时间,并输出了结果。接下来,设置了一个时间,并使用 `schedule()` 方法判断它是否满足 cron 表达式,最后输出了结果。 注意,`schedule()` 方法会返回一个布尔值,表示给定的时间是否满足 cron 表达式。如果返回 `true`,则表示满足;如果返回 `false`,则表示不满足。
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值