cron作业不起作用node-cron

时间:2016-07-28 07:26:07

标签: node.js cron node-cron

我试图在10分钟后运行一个cron作业,有时它会在10分钟后运行,有时它会在我调用webservice后2分钟后运行。以下是代码

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

一旦调用了webservice,它应该总是在10分钟后运行,而不是像2分钟那样。

1 个答案:

答案 0 :(得分:1)

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

* / 10表示如果模数为0

则执行命令

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

所以你的cron将被执行,例如at 09:00,09:10,09:20,09:30等。

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

的内容
setTimeout(myFunc, 10 * 60 * 1000);

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

实施例

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();
})

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