CronJob只执行一次

问题描述 投票:0回答:1

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

我不明白为什么,但我的CronTab只运行一次。它应该每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);

并保持印刷真实

node.js cron
1个回答
0
投票

你的cron模式是错误的。根据https://github.com/kelektiv/node-cron的说法:“这个图书馆有六个字段,其中1秒是最精细的。”

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

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

尝试用'10 * * * * *'替换你的cron模式

© www.soinside.com 2019 - 2024. All rights reserved.