egg的schedle在文件层面设置disable = true以后,只要后端一直稳定运行,则会一直运行。
有些场景我们只想它运行一次,或者说运行若干次以后停止下来的时候就比较麻烦。
let sche = app.schedules; // 获取所有的schedule对象
// __filename 是egg 的全局变量,标识文件的绝对路径。egg的schedules对象中,采用此变量作为单个定时任务的唯一key。
// 获取当前的定时任务
let nowSchedule = sche[__filename];
// 关闭定时任务
nowSchedule.schedule.disable = true;
// 一句话版本
app.schedules[__filename].schedule.disable = true;
这样就可以关闭这个定时任务,并且不用修改文件,重启项目。
注:此方法不会修改静态文件,重新启动项目时,服务依旧会继续开启,但是由于已经满足了停止条件,服务运行一次就会自动停止。