在多台计算机上使用delayed_job,其中一些任务需要在本地运行

时间:2009-09-03 21:07:27

标签: ruby-on-rails delayed-job

我正在尝试将delayed_job用于rails应用的各个部分。问题是,如果我们有多个应用程序实例在运行,但某些工作(例如处理上传)需要由本地工作人员运行,而其他人可以通过任何工作人员运行来获益。

是否有人建议采用本地/非本地工作类型的好方法?

1 个答案:

答案 0 :(得分:8)

我刚刚在the latest issue of Rails Magazine中阅读了“使用delayed_job进行后台处理”,并且我发现您可能滥用内置作业优先级系统。

您可以为员工指定最低和最高优先级。现在,如果您的特殊本地工作优先级为42,那么该工作人员将只处理这些工作......

rake jobs:work RAILS_ENV=production MIN_PRIORITY=42 MAX_PRIORITY=42

虽然这名工人将处理除了那些特殊的本地工作以外的所有工作:

rake jobs:work RAILS_ENV=production MIN_PRIORITY=0 MAX_PRIORITY=10

这应该足够灵活,以实现您的需求。但是,我自由地承认,我今天才了解这个功能,并没有自己尝试过,所以YMMV!