• thinkjs-定时任务


    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
      }
    }]
    
  • 相关阅读:
    oracel 备份导出报错 EXP-00091: Exporting questionable statistics
    将多张图片快速制作成一个PDF文件
    自连接表:M可能无下级,可能有下级
    STL迭代器失效总结
    DNS劫持和DNS污染的区别
    snprintf函数用法(转)
    sql查询面试题
    linux获取主机信息
    linux网络通信中的地址形式转换
    printf函数编程小技巧
  • 原文地址:https://www.cnblogs.com/wentutu/p/11212426.html
Copyright © 2020-2023  润新知