delayed_jobs 并发

concurrency in delayed_jobs

我有 ROR 应用程序和 1 个 delay_job 进程 运行 使用 rake job:work。 ROR 应用程序在多个队列中添加作业。

假设我们有队列 1 和队列 2。
我的问题是队列 1 中的任务和队列 2 中的任务会同时执行吗?

目前在我的应用程序中 运行ning rake job:work 处理后只有 1 个线程被生成,它执行队列 1 任务,然后执行队列 2 任务。
如果我必须并行执行,我必须 运行 两个 job:work 的 rake 任务。

这是正确的行为还是可以 运行 在 job:work 的 1 个 rake 任务中同时进行。 以及 Delay Job 中的 worker 是什么。延迟作业是否可以与 worker

互换使用

谢谢
朴雅卡

不,一名工人不能 运行 同时执行两项工作,为此您需要多个进程 运行ning。

在您描述的示例中,您正在启动一个在前台 运行ning 的工作人员 (rake job:work),但是您可以做的是将它们作为后台工作人员启动,由 运行ning bin/delayed_job 代替(早期版本为 script/delayed_job)。该命令有多个选项,您可以使用它们来指定 delayed_job 如何运行。

其中一个选项是-n--number_of_workers=workers。这意味着您可以通过 运行 执行以下命令来启动两个工人:

bundle exec bin/delayed_job --number_of_workers=2 start

也可以将某些工作人员专用于特定队列中的 运行 个作业,或仅专用于高优先级作业。