我正在使用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);
并保持印刷真实
你的cron模式是错误的。根据https://github.com/kelektiv/node-cron的说法:“这个图书馆有六个字段,其中1秒是最精细的。”
所以你的cron模式试图每隔10秒运行一次,这是不可能的。
尝试用'10 * * * * *'
替换你的cron模式