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

  • 2020-12-18 17:15:29

    coTurn stun服务器搭建,禁用turn

    https://github.com/coturn/coturn 在这里git clone 下来然后编译安装,一切默认即可。编译后,也可以不用安装。在编译目录下bin文件夹下有turnserver turnutils_stunclient turnutils_uclient 这三个等一下会用到的软件。

  • 2020-12-18 17:26:25

    coturn配置文件详细解释

    Coturn 是webrtc,p2p视频通话必不少的,主要包含2个主要功能stun服务, turn服务 Coturn 的githup地址为 https://github.com/coturn/coturn/

  • 2020-12-21 06:26:16

    为UIView添加点击事件

    最近经常碰到要将UIImageView和UILabel看成整体的情况,我于是就将他俩用UIView包起来,那么怎么给一个UIView添加点击事件,可以这么实现:

  • 2020-12-21 09:00:20

    Window.matchMedia() 方法详解

    matchMedia() 返回一个新的 MediaQueryList 对象,表示指定的媒体查询字符串解析后的结果。 matchMedia() 方法的值可以是任何一个 CSS @media 规则 的特性, 如 min-height, min-width, orientation 等。 MediaQueryList 对象有以下两个属性:

  • 2020-12-21 09:42:42

    iframe.contentWindow 操作iframe

    注:iframe.contentWindow这里,返回的是iframe的window对象,所以后面可以接着调用document方法,再接着调用getElementByTagName。那么就可以对iframe里面的元素进行操作了。

  • 2020-12-21 14:00:19

    iframe + postMessage跨域通信

    在实际项目开发中可能会碰到在 a.com 页面中嵌套 b.com 页面,这时第一反应是使用 iframe,但是产品又提出在 a.com 中操作,b.com 中进行显示,或者相反。

  • 2020-12-22 12:02:41

    ios开发优秀的开源框架,demo集合

    期待大家和我们一起共同维护,同时也期望大家随时能提出宝贵的意见(直接提交issues即可)。请广大网友只按照目录结构(即使目录结构有问题)添加三方库,并提交pull request。目录问题大家提出issues后楼主会及时更改的。