如何解决当执行一个 cron 作业并且已经有一个 cron 正在运行时,它们是否同时运行?
我的问题可能看起来有点奇怪,但我会试着解释一下,我有一个执行函数的 cron 作业,在这个函数内部有一个循环执行其他函数,这个 cron 每 1 分钟调用一次,到目前为止好的 。问题是cron调用的这个函数因为循环需要超过1分钟才能完成,当cron运行的下一分钟时,它会再次调用这个函数,它会取消之前的任务,或者它会同时运行时间?不知道能不能好好解释一下。
/*---------- Cron ----------*/
cron.schedule('*/60 * * * * *',async () => {
this.analyze();
// this function takes about 2-3 minutes to finish the loop.
})
解决方法
是的。 CRON 只是一个调度程序。不管怎样,它都会按照时间表运行命令。
有很多方法可以防止多次运行,但这些都需要手动实施。
已经有几个人像https://github.com/kelektiv/node-cron/issues/347
,我有一些示例代码(未测试),希望你能从中得到一些想法:
var counter =0
var counterArray = []
async function asyncAnalyze(){
counter = counter+1
counterArray.push(counter)
for(let i=0;i<counterArray.length;i++){
const eachResult = await analyze();
console.log(‘Counter: ’,i,‘ Result: ’,eachResult)
counter = counter - 1
}
return ;
}
cron.schedule('*/60 * * * * *',async () => {
this.asyncAnalyze()
})
async function analyze(){ }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。