我正在使用delayed_job,并转移到了一个新的更强大的服务器。所以现在我想运行并行作业,就像现在的I have the POWER!一样,但是我对delayed_job是否可以运行多个并行队列感到困惑?
This question建议存在命名队列,但这些队列是否都运行在一个表中,因此是连续的?
在底部,@Jesse Wolgamott建议您可以为每个队列创建一个表,然后该表将并行运行。
有没有人这样做过,他们能告诉我是怎么做的吗?
发布于 2012-08-16 21:31:15
随着bundler投入生产:
RAILS_ENV=production bundle exec script/delayed_job -n 4 start
或者不使用bundler
ruby script/delayed_job -n 4 start
发布于 2012-04-10 20:40:17
这是可能的,而且我一直都在这么做。在我们的示例中,我们需要多个作业来处理三种不同类型的作业: queue_a、queue_b和queue_c。系统将在delayed_job表和队列中创建相应的条目。
启动多个延迟的作业,如
RAILS_ENV=production script/delayed_job -i first --queue=queue_a start
RAILS_ENV=production script/delayed_job -i second --queue=queue_a start
RAILS_ENV=production script/delayed_job -i third --queue=queue_b start
RAILS_ENV=production script/delayed_job -i fourth --queue=queue_c start每个命令都会创建一个delayed_job,因此现在将有4个并行作业,其中两个服务于queue_a,一个服务于queue_b和queue_c。这里的关键是通过-i选项传递的标识符,该选项指定实例名称,我们可以根据需要启动和停止作业。
另一种选择是使用工作池。
RAILS_ENV=production script/delayed_job --pool=tracking --pool=mailers,tasks:2 --pool=*:2 start该命令将为跟踪队列启动1个工作进程,为邮件和任务队列启动2个工作进程,并为任何作业启动2个工作进程。
发布于 2013-07-27 05:07:12
如果您使用rake任务作为作业启动机制,则可以使用queue环境变量来启动由队列分隔的不同工作作业。
示例:
QUEUE=email rake jobs:work
QUEUE=build_data rake jobs:workQUEUES变量允许一个人从特定工作进程的多个DJ队列中出队。
QUEUES=build_data,email rake jobs:work如果您使用的是托管/云环境(例如Heroku),该环境对直接启动脚本/作业的访问权限有限,则尤其有用。
https://stackoverflow.com/questions/9479318
复制相似问题