首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Delayed_job -多个并行队列?

Delayed_job -多个并行队列?
EN

Stack Overflow用户
提问于 2012-02-28 17:23:48
回答 3查看 13.2K关注 0票数 19

我正在使用delayed_job,并转移到了一个新的更强大的服务器。所以现在我想运行并行作业,就像现在的I have the POWER!一样,但是我对delayed_job是否可以运行多个并行队列感到困惑?

This question建议存在命名队列,但这些队列是否都运行在一个表中,因此是连续的?

在底部,@Jesse Wolgamott建议您可以为每个队列创建一个表,然后该表将并行运行。

有没有人这样做过,他们能告诉我是怎么做的吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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

票数 15
EN

Stack Overflow用户

发布于 2012-04-10 20:40:17

这是可能的,而且我一直都在这么做。在我们的示例中,我们需要多个作业来处理三种不同类型的作业: queue_a、queue_b和queue_c。系统将在delayed_job表和队列中创建相应的条目。

启动多个延迟的作业,如

代码语言:javascript
复制
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选项传递的标识符,该选项指定实例名称,我们可以根据需要启动和停止作业。

另一种选择是使用工作池。

代码语言:javascript
复制
RAILS_ENV=production script/delayed_job --pool=tracking --pool=mailers,tasks:2 --pool=*:2 start

该命令将为跟踪队列启动1个工作进程,为邮件和任务队列启动2个工作进程,并为任何作业启动2个工作进程。

票数 31
EN

Stack Overflow用户

发布于 2013-07-27 05:07:12

如果您使用rake任务作为作业启动机制,则可以使用queue环境变量来启动由队列分隔的不同工作作业。

示例:

代码语言:javascript
复制
QUEUE=email rake jobs:work
QUEUE=build_data rake jobs:work

QUEUES变量允许一个人从特定工作进程的多个DJ队列中出队。

代码语言:javascript
复制
QUEUES=build_data,email rake jobs:work

如果您使用的是托管/云环境(例如Heroku),该环境对直接启动脚本/作业的访问权限有限,则尤其有用。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9479318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档