我试图在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分钟那样。
答案 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();
})
但请注意,这将每年同时执行;)