【发布时间】:2020-09-29 21:03:53
【问题描述】:
我正在使用公牛队列来处理作业。
假设当我重新启动开发服务器时,作业正在以active 的状态运行。当worker脚本再次启动时,队列中的进程仍然设置为active,所以bulk决定再次启动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"))
})
这些都不起作用。任何人都有解决方案来实现这一目标?
【问题讨论】:
标签: javascript node.js queue worker bull-queue