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

2018-04-16 11:30:11

一. 安装

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,有能解决的大神请留言. 

更多详情:https://www.npmjs.com/package/node-schedule

  • 2019-10-25 15:18:18

    Vue.use Vue.prototype区别

    1、不是为了vue写的插件(插件内要处理)不支持Vue.use()加载方式 2、非vue官方库不支持new Vue()方式 3、每一个vue组件都是Vue的实例,所以组件内this可以拿到Vue.prototype上添加的属性和方法。

  • 2019-10-25 23:33:45

    php制作漂亮的随机颜色标签云效果

    代码中的array里面的字符串就是各种随机色的编码,大家可以根据自己的需求来配置颜色。 然后input1里面是字体大小的随机代码,也可以自行修改。

  • 2019-10-27 00:23:42

    mac卡住,强制关闭应用

    要正常退出(关闭)Mac 应用,请从菜单栏的应用菜单中选取“退出”,或按下 Command (⌘)-Q。如果应用不退出,请按照以下步骤强制该应用退出。

  • 2019-10-27 11:02:10

    mac不要输入sudo,免密设置

    mac有时候使用终端进行操作,会让输入sudo 并且要输入命令,这要很啰嗦,浪费时间,我们得想办法去掉。

  • 2019-10-27 11:08:11

    Mac系统移到废纸篓的快捷键是什么

    用Windows键盘上的delete键和del键都不能删除文件,那么在Mac系统移到废纸篓的快捷键是什么?答:在移到废纸篓的快捷键组合就是Command + delete,可以将文件删除到废纸篓。清空废纸篓的快捷键是 Command + shift + delete​。