Skip to content
On this page

定时任务&定点任务

egg 提供了强大的定时任务系统。通过定时任务,可以系统修改服务的缓存数据,以便处理需要定时更新的数据。

在 app/schedule 目录下新建一个 js 文件,每一个 js 文件就是一个定时任务


### 8.1 定时任务
javascript
// app/schedule
module.exports = {
  schedule: {
    interval: "1m", // 1 分钟间隔
    type: "all", // 指定所有的 worker 都需要执行
  },
  async task(ctx) {
    i++;
    console.log(i);
  },
};

/* 注释:
	1ms -> 1毫秒
	1s -> 1秒
	1m -> 1分钟
*/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

8.2 定点任务

定点任务(以每周一的 5 点 30 分 0 秒更新排行榜为例)


1、使用 cron 参数设定时间,cron 参数分为 6 个部分,*表示所有都满足

*    *    *    *    *    *
┬    ┬    ┬    ┬    ┬    ┬
│    │    │    │    │    |
│    │    │    │    │    └ 星期 (0 - 7) (0或7都是星期日)
│    │    │    │    └───── 月份 (1 - 12)
│    │    │    └────────── 日期 (1 - 31)
│    │    └─────────────── 小时 (0 - 23)
│    └──────────────────── 分钟 (0 - 59)
└───────────────────────── 秒 (0 - 59, optional)
1
2
3
4
5
6
7
8
9
javascript
// app/schedule
module.exports = {
  schedule: {
    cron: "0 30 5 * * 1", //每周一的5点30分0秒更新
    type: "all", // 指定所有的 worker 都需要执行
  },
  async task(ctx) {
    i++;
    console.log(i);
  },
};
1
2
3
4
5
6
7
8
9
10
11

8.3 只执行一次定时任务

设置 immediate 参数为 true 时,该定时任务会在项目启动时,立即执行一次定时任务

javascript
module.exports = {
  schedule: {
    interval: "1m", // 1 分钟间隔
    type: "all", // 指定所有的 worker 都需要执行
    immediate: true, //项目启动就执行一次定时任务
  },
  async task(ctx) {
    i++;
    console.log(i);
  },
};
1
2
3
4
5
6
7
8
9
10
11

8.4 关闭任务

配置 disable 参数为 true 时,该定时任务即关闭

8.5 指定定时任务执行环境 env

javascript
env: ["dev", "debug"]; //该定时任务在开发环境和debug模式下才执行
1
沪ICP备20006251号-1