CronJob只执行一次

时间:2018-03-01 18:54:12

标签: node.js cron

我正在使用CronJob for NodeJS https://github.com/kelektiv/node-cron

我不明白为什么但是我的CronJob只运行一次。它应该每10秒运行一次,但在第一次运行后它不会重新启动。

async function Job(moneda, condicion) {
console.log('init');
        var res = await Analyzer.GetSpread(moneda);
        var spread = res.MaxExchange.Bid/res.MinExchange.Ask;
        console.log('Spread: ' + spread + 'Moneda: ' + moneda);
        if (await condicion.CumpleCondicion(spread)){
                var ids = await db.GetSuscripciones();
                var mensaje = 'Spread: ' + spread.toFixed(3) + '\nMenor Ask: ' + res.MinExchange.Exchange + '--> ' + res.MinExchange.Ask + '\nMayor Bid: ' + res.MaxExchange.Exchange + '--> ' + res.MaxExchange.Bid;
                for (var i = 0, len = ids.length; i < len; i++) {
                        bot.SendAlert(ids[i].id,mensaje);
                }
        }
console.log('end');  //this is reached
}



exports.Start = function(value){
        condicionBTC = new condicionState('btc');
        new CronJob('*/10 * * * * *', Job('btc',condicionBTC), null, true, 'America/Los_Angeles');
}

这是在控制台中打印的(仅一次)

init
Spread: 1.007141110114658 Moneda: btc
cumple condicion 1.007141110114658
end

如果停止cron作业有一些异常,我应该把它抓到哪里,这样我才能看到发生了什么?

我添加了这个

var job = new CronJob('*/10 * * * * *', Job('btc',condicionBTC), null, true, 'America/Los_Angeles');
setInterval(function(){ console.log(job.running); }, 3000);

并保持打印真实

1 个答案:

答案 0 :(得分:0)

你的cron模式错了。根据{{​​3}}: &#34;这个库有六个字段,最细的粒度为1秒。&#34;

  • 秒:0-59
  • 分钟:0-59
  • 时间:0-23
  • 日期:1-31
  • 月份:0-11(1月至12月)
  • 星期几:0-6(周日至周六)

所以你的cron模式试图每隔10秒运行一次,这是不可能的。

尝试用'10 * * * * *'

替换您的cron模式