【问题标题】:cron job is not working node-croncron 作业不工作 node-cron
【发布时间】:2016-07-28 18:04:02
【问题描述】:

我试图在 10 分钟后运行 cron 作业,有时它会在 10 分钟后运行,有时在我调用 web 服务时会在 2 分钟后运行。下面是代码

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

它应该总是在 10 分钟后运行,而不是像调用 web 服务后的 2 分钟那样运行。

【问题讨论】:

    标签: node.js cron node-cron


    【解决方案1】:

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

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

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

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

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

    setTimeout(myFunc, 10 * 60 * 1000);
    

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

    例子

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

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

    【讨论】:

    • 有什么方法可以在间隔后运行吗?还是应该使用 setInterval javascript 函数来执行?
    • 什么是 setTimeout 或 cron 作业的最佳选项,时间正确 + 10?
    • Cronjobs 是为了重复作业执行而定期完成的。在这里使用 cron 对我来说听起来有点过头了,但它也可以工作。将在几分钟内添加一个示例。
    • 好的,我会看到你的例子。但我想现在 setTimeout 更好
    • 如果我在完成任务时销毁它,那么它将不会再次执行,除非调用 web 服务
    猜你喜欢
    • 2014-11-22
    • 2012-02-18
    • 2018-10-24
    • 1970-01-01
    • 1970-01-01
    • 2021-06-18
    • 2019-07-28
    • 2015-02-02
    相关资源
    最近更新 更多