thinkjs-定时任务

配置

原文文档

定时任务的配置文件为 src/config/crontab.js(多模块项目下配置文件为 src/common/config/crontab.js,也支持在每个模块下配置定时任务文件 src/[module]/config/crontab.js),配置项为一个数组

//例子
module.exports = [{
interval: '10s',
immediate: true,
handle: () => {
console.log("测试定时器")
}
}, {
//每周一1:30执行 教练设置默认时间的排班表
cron:"30 1 * * 1 *",
immediate: false,
enable: true,
handle: "coach/course/timingSetWork"
type: 'all'
}]

参数详情

  • interval {String | Number} 执行的时间间隔 单位:毫秒

    interval:1000 表示1s中执行一次 等同于 interval:'1s';

    String配置文档:1d(1天),10h(10小时),1y(一年)

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

    如果配置了interval, 那么会忽略该属性crontab 的格式文档

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

    任务会在哪些子进程中执行,默认只在一个子进程中执行,all

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

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

    定时任务的执行方法,可以是一个具体的执行函数,也可以是一个路由地址(会根据路由解析,然后执行对应的 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. Jquery自定义插件之$.extend()、$.fn和$.fn.extend()
  2. 关于css样式1
  3. DOM LOAD测试笔记
  4. 【Android测试】【第十四节】Appium——简述
  5. hiho 第117周 二分图多重匹配,网络流解决
  6. java多线程的使用1
  7. c#操作txt
  8. acount
  9. iOS xcode 8 注释快捷键
  10. Open Replicator
  11. 如何解决Redis中的key过期问题
  12. 通信协议:HTTP、TCP、UDP
  13. USACO Section 1.3 题解 (洛谷OJ P1209 P1444 P3650 P2693)
  14. Django 获取访问者信息
  15. 深入分析 ThreadLocal
  16. 正则表达式--C#正则表达式的符号及例子
  17. Oracle 10g安装报错记录
  18. html 网页生产pdf文件
  19. [.NET开发] C#实现的SQL备份与还原功能示例
  20. linux-*.filetype.bz2 unzip

热门文章

  1. itertools模块中的product方法
  2. DP&图论 DAY 5 上午
  3. Linux 命令速记本
  4. AppInfoProvider提供应用信息的工具类
  5. mysql|full join 多表联查,系统报错,无法解答!
  6. CISCN2018 Writeup
  7. Selenium 2自动化测试实战26(unittest单元测试框架)
  8. SQL学习(一)相关基础知识
  9. Python之数组
  10. django实现利用mailgun进行收发邮件