我试着在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();
})它应该总是在10分钟后运行,而不是像webservice被调用后的2分钟那样运行。
发布于 2016-07-28 09:12:09
cron语法要求在固定时间运行命令,而不是在间隔之后运行。
如果模块为0,则*/10意味着执行命令
在您的例子中,代码将在第二、第二、每10分钟、每小时、每一天等等。
所以您的cron将被执行,例如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();
})但要注意这样一个事实,即每年都要在同一时间执行;)
https://stackoverflow.com/questions/38629696
复制相似问题