每天学习一点点,成功增加一大步

Nodejs 定时执行(node-cron)

NodsJS zhanghui 2845℃

在使用过阿里云的函数计算之后知道有个 cron 表达式来实现定时执行任务的定时器。之前只知道有 setInterval (或者 settimeout)来实现感觉太皮,肯定会翻车。所以去摸工具。搜索一下出现一个 node-cron 模块。看起来有很多人用,嗯….就用这个了。

Npm 文档

https://www.npmjs.com/package/cron

1、安装

npm install cron

测试

var CronJob = require('cron').CronJob;
new CronJob('* * * * * *', function() {
  console.log('You will see this message every second');
}, null, true, 'America/Los_Angeles');

要注意的是这里有个时区的填写,如果要国内的时区将 America/Los_Angeles 改为 Asia/Chongqing

2、使用

// API
constructor(cronTime, onTick, onComplete, start, timezone, context, runOnInit, unrefTimeout)
  • cronTime [必需] 配置定时任务的时间,可以使用这可以是cron语法或JS Date对象的形式。
  • onTick [必需]在指定时间触发的回调。
  • onComplete [可选] 在作业停止时将触发的回调。
  • Start [可选]指定是否在退出构造函数之前启动作业,默认情况下,
  • timeZone [可选] -指定执行的时区。这将修改相对于您的时区的实际时间 ,不设置为当前所在时区。设置为Europe/London 为UTC 0时区

3、cronTime时间语法

此模块中中cron有一定的差异,时间取值范围,且有六个字段,其中1秒是最精细的粒度。:

  1. 秒:0-59
  2. 分钟:0-59
  3. 小时:0-23
  4. 天:1-31
  5. 月份:0-11(1月至12月)
  6. 星期几:0-6(周日至周六)

排列顺序:秒 分钟 小时 天 月份 星期几
以下是可用的符号:

  • *为通配符
  • -为时间段连接符
  • ,号为分隔符,可以在某一节输入多个值
  • /号为步进符

3.1、每秒都执行

* * * * * *

3.2、每次分钟为10的 那60秒 每秒都执行。

'10 03 * * * *'

3.3、在秒为10 分钟为3执行

'10 05 14 * * *'

3.4、每天14点05分10秒时执行语句

'10 05 14-17 * * *'

3.5、每天14-17点的05分10秒时执行语句

'11,22,25 * * * * *'

我们可以使用通配符和/步进符实现间隔多长时间执行
间隔3秒执行

*/3 * * * * *

间隔两分钟执行

0 */2 * * * *

在每分钟第10秒执行

var CronJob = require('cron').CronJob;
new CronJob('10 * * * * *', function() {
    const d = new Date();
	console.log(d);
}, null, true);

间隔10秒执行

var CronJob = require('cron').CronJob;
new CronJob('*/10 * * * * *', function() {
    const d = new Date();
	console.log(d);
}, null, true);

官方文档:

http://crontab.org/

转载请注明:隨習筆記 » Nodejs 定时执行(node-cron)

喜欢 (17)