在使用 bull 的时候,我们一般会有下面的几个问题:
-
默认情况下,job能一直运行下去吗
-
job 的超时设置是如何工作的
-
超时之后 job 的运行会自动取消吗
首先看第一个问题,可以直接给出结论,默认情况下job会一直运行下去直到应用关闭
import Bull, { Job } from 'bull'
const main = async () => {
const queue = new Bull('job timeout test', 'redis://127.0.0.1:6379');
queue.process(async (job: Job) => {
for(let i=0; i< 10000; i++){
await new Promise((ok,no) => {
setTimeout(()=>{
ok(null)
},1000)
})
const p = i * 100 / 10000
const log = `job process ${p}`
await job.progress(p)
await job.log(log)
console.log(log)
}
return 'ok'
});
queue.on('failed',
本文探讨了Bull任务队列中job的运行情况,包括默认情况下job是否会一直运行,如何设置job的超时以及超时后是否自动取消。分析了Bull通过将handler转换为cancelablePromise实现超时管理,并指出即使发生TimeoutError,job也不会自动停止。提出了通过在循环中检查job状态来手动控制任务结束的方法。
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



