您的位置:首页 > Web前端 > Node.js

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

2017-11-20 17:21 711 查看
http://blog.csdn.net/zzwwjjdj1/article/details/51898257

一. 安装

npm install node-schedule

二. 使用

例子通过定时访问url展示
首先引入2个模块和访问的方法:

[javascript]
view plain
copy

var http     = require('http');  
var schedule = require("node-schedule");  

[javascript]
view plain
copy

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.

[javascript]
view plain
copy

var date = new Date(2016,6,13,15,50,0);  
schedule.scheduleJob(date, function(){  
  httpGet();  
});  

运行结果:



2. 秒为单位执行

比如:每5秒执行一次

[javascript]
view plain
copy

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分种执行一次

[javascript]
view plain
copy

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小时执行一次

[javascript]
view plain
copy

var rule3     = new schedule.RecurrenceRule();  
var times3    = [1,5,9,13,17,21];  
rule3.hour  = times3;  
schedule.scheduleJob(rule3, function(){  
  httpGet();  
});  

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

5.Cron风格



[javascript]
view plain
copy

schedule.scheduleJob('5 * * * * *', function(){  
  httpGet();  
});  

这个代码的意思就是每分钟的5秒这个点执行



比较坑的就是如果项目中有定时任务的时候,开启多线程模式就会执行多次,不管是这个模块还是使用 setInterval,有能解决的大神请留言. 
更多详情:https://www.npmjs.com/package/node-schedule
https://www.cnblogs.com/ajun/p/3548259.html 使用方法

1:确定时间

    例如:2014年2月14日,15:40执行

    var schedule = require("node-schedule");

    var date = new Date(2014,2,14,15,40,0);

    var j = schedule.scheduleJob(date, function(){

    console.log("执行任务");

  });

    取消任务

    j.cancel();

 

2:每小时的固定时间

  例如:每小时的40分钟执行

  var rule = new schedule.RecurrenceRule();

  rule.minute = 40;

  var j = schedule.scheduleJob(rule, function(){

    console.log("执行任务");

  });

3:一个星期中的某些天的某个时刻执行,

  例如:周一到周日的20点执行

  var rule = new schedule.RecurrenceRule();

  rule.dayOfWeek = [0, new schedule.Range(1, 6)];

  rule.hour = 20;

  rule.minute = 0;

  var j = schedule.scheduleJob(rule, function(){

    console.log("执行任务");

  });

 4:每秒执行

  var rule = new schedule.RecurrenceRule();

  var times = [];

  for(var i=1; i<60; i++){

    times.push(i);

  }

  rule.second = times;

  var c=0;

  var j = schedule.scheduleJob(rule, function(){

        c++;

        console.log(c);

  });
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: