Thinkjs——定时任务配置代码示例

8 篇文章 0 订阅
5 篇文章 0 订阅

介绍
ThinkJS 是一款面向未来开发的 Node.js 框架,整合了大量的项目最佳实践,让企业级开发变得如此简单、高效。从 3.0 开始,框架底层基于 Koa 2.x 实现,兼容 Koa 的所有功能。
官方文档传送门点这里

作为国内一款优秀的nodejs开源框架,使用起来非常方便。作为一名Android 开发的程序猿,经过短暂的学习,目前也能够独自后台API了。在这里记录自己的学习开发经验,帮助大家一起学习成长。

Thinkjs 配置定时任务很简单:

  1. 定时任务的配置文件为 src/config/crontab.js(多模块项目下配置文件为 src/common/config/crontab.js,也支持在每个模块下配置定时任务文件 src/[module]/config/crontab.js),配置项为一个数组。如:
module.exports = [{
  interval: '10s',
  immediate: true,
  handle: () => {
    //do something
  }
}, {
  cron: '0 */1 * * *',
  handle: 'crontab/test',
  type: 'all'
}]

src/config/crontab.js 这个文件执行 thinkjs new [project_name] 来创建项目,默认是没有的,需要自己创建,如下图:

2.参数说明:

每个配置项支持的参数如下:

interval {String | Number} 执行的时间间隔

支持数字和字符串二种格式,单位是毫秒。如果是字符串,那么会用 think.ms 方法解析为数字。

cron {String} crontab 的格式,如 0 /1 * *

crontab 格式,具体见 http://crontab.org/。如果配置了 interval 属性,那么会忽略该属性。

type {String} 任务执行方式, one 或者 all, 默认是 one

任务会在哪些子进程中执行,默认只在一个子进程中执行,all 为在所有子进程中执行。即使配置了一个子进程中执行,也只能保证一个机器下在一个子进程中执行,多台机器下还是会执行多次。如果跨机房、跨机器只希望执行一次,那么可以通过 enable 参数控制或者命令行执行来完成。

handle {Function | String} 执行任务,执行相应函数或者是路由地址,如:crontab/test

定时任务的执行方法,可以是一个具体的执行函数,也可以是一个路由地址(会根据路由解析,然后执行对应的 Action)。

immediate {Boolean} 是否立即执行,默认是 false

定时任务是否立即执行一次。

enable {Boolean} 是否开启,默认是 true

定时任务是否开启,设置为 false 则关闭该条定时任务规则。比如:多机器下只希望在一台机器下执行,那么可以通过机器名来判断:

const hostname = require('os').hostname();
module.exports = [{
  interval: '10s',
  enable: hostname === 'host name',
  handle: () => {
    //do something
  }
}]

重点解释说明:

  1. 定时任务handle可以有两种配置方式,一种是函数,或者为路由地址。
  2. 定时任务的时间设置也有两种配置,一种是interval 设置时间间隔,一种是cron {String} crontab 的格式,如果配置了interval 参数则cron参数无效。
    推荐使用crontab 的格式的配置,比较方便灵活,可以直接设定定时任务的执行时间比如每天晚上24点,或者每天早晨6点执行定时任务,用来做一些后台统计之类的事情。
    后面介绍一下,使用Thinkjs的定时任务发送邮件的示例。
    定时任务代码如下:
module.exports = [{
    // interval: '10s',
    cron: '*/1 * * * *',
    immediate: true,
    handle: () => {
      //do something
      console.log('crontab handler.');

    }
  }, {
    cron: '*/1 * * * *',
    // interval: '3s',
    immediate: true,
    handle: 'http://127.0.0.1:8360/index/sendMail',
    type: 'all'
  }]

其中:

  1. cron: ‘/1 * * *’,表示每分钟执行一次;
  2. 更多关于crontab 的格式的配置,可以自行在上网搜索了解;比如:https://blog.csdn.net/qq_36644757/article/details/79963004
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值