【发布时间】:2018-03-01 18:54:11
【问题描述】:
我正在为 NodeJS 使用 CronJob 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);
并保持打印真实
【问题讨论】:
-
Cron 只允许至少一分钟(参见:askubuntu.com/a/802)。
-
我正在使用github.com/kelektiv/node-cron,它允许每秒最多运行 1 次
-
你能用 onTick: function() { console.log('job ticked'); } 内部作业配置,即新的 CronJob 以检查您的作业是否正在运行?
-
我添加了
setInterval(function(){ console.log(job.running); }, 3000);,每次都打印为true