我正在使用公牛队列来处理作业。
假设一个作业正在以active
我重新启动开发服务器时的状态运行。当worker脚本再次启动时,该进程仍被设置active
在队列中,因此bull决定再次启动worker进程。
这很快就会变得具有破坏性,因为脚本在开发过程中经常会重新启动,因此许多进程最终会运行并把事情弄得一团糟。我想要的只是在服务器启动时不要重新启动这些作业。
我尝试过的事情:
attempts: 1
创建作业时的设置(也尝试了 0) https://github.com/OptimalBits/bull/blob/HEAD/REFERENCE.md#queueadd- 使用 queue.clean() ( https://github.com/OptimalBits/bull/blob/HEAD/REFERENCE.md#queueclean )
- 编写脚本以删除活动作业(抛出错误:作业 xx 缺少锁失败):
let active_jobs = await queue.getJobs(['active']);
active_jobs.forEach(async (active_job) => {
await active_job.discard()
await active_job.moveToFailed(new Error("Auto-killed during dev server restart"))
})
这些都不起作用。任何人都有解决方案来实现这一目标?