node定时任务(node-schedule模块)

实现一个每天凌晨十二点更新服务器上的git代码的功能

koa2框架下的app.js文件

import schedule from 'node-schedule';
import updateCode from './controllers/hcpLan/fetch'

const app = new Koa();

const router = new Router();

router.get( '/', (ctx, next) => {
      ctx.body = 'hello'
});
 
app.use(router.routes()).use(router.allowedMethods());


let rule = new schedule.RecurrenceRule()
/**每天的凌晨12点更新代码*/
rule.hour = 0
rule.minute = 0
rule.second = 0
/**启动任务*/
schedule.scheduleJob(rule, () => {
  updateCode.cloneRepo();
  console.log('代码更新了!');
})

app.listen(3000)

node-schedule原理:利用setTimeOut和event事件进行管理,对所有加入的事件进行排序,并且计算当前时间和最近一个事件发生时间的时间间隔,然后调用setTimeOut设置回调。总的来说分两种事件,一种是一次性的,一种是周期性的,一次性任务调用完就结束,周期性的会不断地循环调用,当一个周期性事件被调用后,会根据周期生成下一个周期任务,并添加到任务列表中,重新排序。每个任务调用结束,都会计算并准备下一个任务。

一、设置定时器

node-schedule允许多种规则去实现定时

1. Cron风格定时器

*    *    *    *    *    *
┬    ┬    ┬    ┬    ┬    ┬
│    │    │    │    │    |
│    │    │    │    │    └ 一周的星期 (0 - 7) (0 or 7 is Sun)
│    │    │    │    └───── 月份 (1 - 12)
│    │    │    └────────── 月份中的日子 (1 - 31)
│    │    └─────────────── 小时 (0 - 23)
│    └──────────────────── 分钟 (0 - 59)
└───────────────────────── 秒 (0 - 59, OPTIONAL)

var schedule = require('node-schedule');
//当分钟为42时,执行一个cron任务
var j = schedule.scheduleJob('42 * * * *', function(){
  console.log('执行了!');
});

2.Date对象规则定时器

var schedule = require('node-schedule');
var date = new Date('2017-09-26 22:00:00');

var j = schedule.scheduleJob(date, function(){
  console.log('执行了!');
});

3.RecurrenceRule实例规则定时器

var schedule = require('node-schedule');

var rule = new schedule.RecurrenceRule();
rule.minute = 42;

var j = schedule.scheduleJob(rule, function(){
  console.log('执行了!');
});

具体使用可查看github文档https://github.com/node-schedule/node-schedule 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Node.js中的定时任务可以通过使用node-schedule模块来实现。你可以通过安装这个模块并使用它的scheduleJob方法来创建定时任务。例如,你可以使用以下代码创建一个每分钟的第30秒执行一次的定时任务: ``` const schedule = require('node-schedule'); schedule.scheduleJob('30 * * * * *', () => { // 具体任务内容... try { // 执行任务的代码 } catch(error) { // 处理错误 } }); ``` 这个定时任务会在每分钟的第30秒执行一次任务,并且你可以在回调函数中编写你需要执行的具体任务内容。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Node.js定时任务node-schedule详解](https://blog.csdn.net/qq_38157825/article/details/117088483)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Nodejs定时任务node-schedule)、(cron)](https://blog.csdn.net/EmptyPointer/article/details/108509664)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [node定时任务node-schedule模块)](https://blog.csdn.net/weixin_44428184/article/details/119418746)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值