thinkjs-定时任务

Posted wentutu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
  
]

以上是关于thinkjs-定时任务的主要内容,如果未能解决你的问题,请参考以下文章

如何配置定时任务

CELERY 定时任务

SpringBoot的定时任务

SpringBoot的定时任务

SpringBoot的定时任务

spring实现动态定时任务