CronJob只执行一次
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CronJob只执行一次相关的知识,希望对你有一定的参考价值。
我正在使用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) + '
Menor Ask: ' + res.MinExchange.Exchange + '--> ' + res.MinExchange.Ask + '
Mayor 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秒是最精细的。”
- 秒:0-59
- 分钟:0-59
- 营业时间:0-23
- 每月的一天:1-31
- 月份:0-11(1月至12月)
- 星期几:0-6(周日至周六)
所以你的cron模式试图每隔10秒运行一次,这是不可能的。
尝试用'10 * * * * *'
替换你的cron模式
以上是关于CronJob只执行一次的主要内容,如果未能解决你的问题,请参考以下文章
UI5 - XML 片段中的格式化程序只执行一次。如何再次运行它们?