如何安排任务在每天上午9点在Node中运行?

时间:2019-03-29 05:14:32

标签: node.js cron node-schedule

我已检查node-schedule

*    *    *    *    *    *
┬    ┬    ┬    ┬    ┬    ┬
│    │    │    │    │    │
│    │    │    │    │    └ day of week (0 - 7) (0 or 7 is Sun)
│    │    │    │    └───── month (1 - 12)
│    │    │    └────────── day of month (1 - 31)
│    │    └─────────────── hour (0 - 23)
│    └──────────────────── minute (0 - 59)
└───────────────────────── second (0 - 59, OPTIONAL)

我已经做过同样的事情,以便在每个上午9点运行,但每天运行不止一次。

let tenSecCron = schedule.scheduleJob('0 0 9 * * *', async () => {
    this.runJobs();
});

2 个答案:

答案 0 :(得分:1)

我相信正确的cron表达式是这样的:

0   0   9   ?   *   *   * 

如果您的调度程序违反了上面的表达式,later.js是获取准确结果的良好库。

答案 1 :(得分:1)

另一种方法是按如下方式使用object literal syntax

var j = schedule.scheduleJob({hour: 9, minute: 0} , async () => {
    this.runJobs();
});

此外,应注意node-schedule是内存中的调度程序,因此它不是基于cron的。因此,调度仅在node.js进程正在运行时才起作用。如果重新启动,则可能会遇到奇怪的影响,例如您的工作会立即安排。