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

  • 2018-04-18 20:44:19

    $(...).live is not a function

    jquery中的live()方法在jquery1.9及以上的版本中已被废弃了,如果使用,会抛出TypeError: $(...).live is not a function错误。

  • 2018-04-19 16:31:03

    mysql双机热备的实现

    准备两个mysql,A和B,A为主,B为从。前提是这两个数据库现在的表结构要一模一样,否则不成功。这个要锁表处理了。

  • 2018-04-19 16:32:47

    mysql binlog_do_db参数设置的坑

    在配置文件中想当然地配置成binlog_do_db=test,xx,jj,以为是三个库。结果无论什么操作都没有binlog产生

  • 2018-04-20 02:11:58

    Android中finish掉其它的Activity

    在Android开发时,一般情况下我们如果需要关掉当前Activity非常容易,只需要一行代码 this.finish;即可。 那么,如果是想要在当前Activity中关掉其它的Activity应该怎么实现呢? 比如更改了某个设定,程序需要重新运行并加载新的配置文件,就要用到restart或finish让程序重启。

  • 2018-04-20 09:12:07

    如何在 7 分钟内黑掉 40 家网站?

    去年夏天我开始学习信息安全与黑客技术。在过去的一年中,我通过参加各种战争游戏、夺旗以及渗透测试模拟,不断提高我的黑客技术,还学习了很多关于“如何让计算机偏离其预期行为”的新技术。

  • 2018-04-25 00:46:48

    Android开发笔记——SharedPreferences 存储实体类以及任意类型

    我们常常要用到保存数据,Android中常用的存储方式有SQLite,sharedPreferences 等,当然也有各自的应用场景,前者适用于保存较多数据的情形,后者责倾向于保存用户偏好设置比如某个checkbox的选择状态,用户登录的状态等等,都是以键值对的形式进行的文件读取,可以存储String,int,booean等一些基本数据类型等等。

  • 2018-04-25 11:48:44

    Java泛型详解

    泛型是Java中一个非常重要的知识点,在Java集合类框架中泛型被广泛应用。本文我们将从零开始来看一下Java泛型的设计,将会涉及到通配符处理,以及让人苦恼的类型擦除。

  • 2018-05-05 20:31:52

    StringUtils就这1张图,必备(二)

    StringUtils是工作中使用最频繁的一个工具类,提供了大量丰富的字符串操作方法,下面是所有方法的一个蓝图:

  • 2018-05-06 00:41:36

    设置EditText不自动聚焦

    如果界面中有EditText的时候,用户打开界面的话EditText就会自动聚焦。如果想取消这种一打开界面EditText就聚焦效果,可在EditText的上级父容器中加入如下代码: