delayed_jobs中的并发性

时间:2018-02-02 09:28:00

标签: ruby-on-rails delayed-job

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

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

目前在我的应用程序中运行rake job后:工作进程只生成1个线程,执行queue1任务然后执行queue2任务。
如果我必须并行执行,我必须运行两个工作任务:工作。

它是正确的行为还是可以在1个工作任务中同时运行:工作。 什么是延迟工作的工人。延迟工作与工人互换使用

感谢
普里

1 个答案:

答案 0 :(得分:0)

不,一个工作人员不能同时运行两个作业,您需要运行多个进程。

在您描述的示例中,您正在启动一个在前台运行的工作程序(rake job:work),但您可以做的是通过运行{{1}来启动它们作为后台工作程序代替(bin/delayed_job用于早期版本)。该命令有多个选项,可用于指定您希望delayed_job如何运行。

其中一个选项是script/delayed_job-n。这意味着您可以通过运行以下命令来启动两个工作程序:

--number_of_workers=workers

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