Appearance
定时任务&定点任务
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
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
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
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
2
3
4
5
6
7
8
9
10
11
8.4 关闭任务
配置 disable 参数为 true 时,该定时任务即关闭
8.5 指定定时任务执行环境 env
javascript
env: ["dev", "debug"]; //该定时任务在开发环境和debug模式下才执行
1