nodejs模塊 node-schedule使用,定時任務


一. 安裝

npm install node-schedule

二. 使用

例子通過定時訪問url展示
首先引入2個模塊和訪問的方法:
[javascript]  view plain  copy
 
  1. var http     = require('http');  
  2. var schedule = require("node-schedule");  
[javascript]  view plain  copy
 
  1. function httpGet(){  
  2.    var uri = `http://120.25.169.8/before/index`;  
  3.   http.get(uri, function(res) {   
  4.     console.log("訪問個人微博狀態碼: " + res.statusCode);   
  5.   }).on('error', function(e) {   
  6.     console.log("個人微博 error: " + e.message);   
  7.   });  
  8. }  

1. 確定的時間執行

比如: 2016年7月13日15:50:00 , new Date() 的時候月份要減1.
[javascript]  view plain  copy
 
  1. var date = new Date(2016,6,13,15,50,0);  
  2. schedule.scheduleJob(date, function(){  
  3.   httpGet();  
  4. });  
運行結果:

2. 秒為單位執行

比如:每5秒執行一次
[javascript]  view plain  copy
 
  1. var rule1     = new schedule.RecurrenceRule();  
  2. var times1    = [1,6,11,16,21,26,31,36,41,46,51,56];  
  3. rule1.second  = times1;  
  4. schedule.scheduleJob(rule1, function(){  
  5.   httpGet();  
  6. });  
運行結果:


3.以分為單位執行

比如:每5分種執行一次
[javascript]  view plain  copy
 
  1. var rule2     = new schedule.RecurrenceRule();  
  2. var times2    = [1,6,11,16,21,26,31,36,41,46,51,56];  
  3. rule2.minute  = times2;  
  4. schedule.scheduleJob(rule2, function(){  
  5.   httpGet();  
  6. });  
運行結果:

有500尷尬請忽略,不小心把數據庫關掉了.

4.以小時為單位執行

比如:每4小時執行一次
[javascript]  view plain  copy
 
  1. var rule3     = new schedule.RecurrenceRule();  
  2. var times3    = [1,5,9,13,17,21];  
  3. rule3.hour  = times3; rule1.minute = 0;  
  4. schedule.scheduleJob(rule3, function(){  
  5.   httpGet();  
  6. });  

以小時的就不貼運行結果了.時間太久

5.Cron風格

[javascript]  view plain  copy
 
  1. schedule.scheduleJob('5 * * * * *', function(){  
  2.   httpGet();  
  3. });  
這個代碼的意思就是每分鍾的5秒這個點執行
 
比較坑的就是如果項目中有定時任務的時候,開啟多線程模式就會執行多次,不管是這個模塊還是使用 setInterval,有能解決的大神請留言. 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM