0

I am trying to run a cron job after 10 minutes, sometimes it runs after 10 minutes and sometimes it runs after like 2 minutes when I call the webservice. Below is the code

router.post('/getUser', function (req, res) {
    var task = cron.schedule('0 */10 * * * *', function () {
        console.log("cron job started")
     }, false);
     task.start();
})

It should always runs after 10 minutes not like sometime 2 minutes as soon as the webservice is called.

4

1 回答 1

3

cron 语法表示在固定时间而不是在间隔之后运行命令。

*/10 表示模数为 0 时执行命令

在您的情况下,代码将在每天每小时每 10 分钟的第二个 0 处执行,依此类推。

因此,您的 cron 将在例如 09:00、09:10、09:20、09:30 等执行。

我知道内置方法的唯一方法是使用类似的东西

setTimeout(myFunc, 10 * 60 * 1000);

另一个选项是使用 moment.js 设置一个在计算出的正确时间现在 +10 分钟运行的固定 cron,您可以在其中指定确切的执行时间。

例子

var moment = require('moment')


router.post('/getUser', function (req, res) {
var cronString = moment().second() +' '+ moment().add(10,'minutes').minute() +' '+ moment().hour() +' '+ moment().day() +' '+ moment().month() +' *';

var task = cron.schedule(cronString, function () {
    console.log("cron job started")
 }, false);
 task.start();
})

但请注意,这将每年同时执行;)

于 2016-07-28T09:12:09.163 回答