2017-06-28 95 views
3

我有一個延遲的工作隊列,其中包含特別慢的運行任務,我希望通過自己的一組專業工作人員來處理這個任務,因此減少工作流程其他部分的瓶頸風險會降低。延遲的工作排除隊列

RAILS_ENV=production script/delayed_job --queue=super_slow_stuff start

但是我當時也希望所有其他隊列一個普通工人池,希望不必seperately指定它們(他們的名字等,經常會/加太)。一些類似於:

RAILS_ENV=production script/delayed_job --except-queue=super_slow_stuff start

我可以使用通配符*性格特徵,但我想這將導致第二個工人皮卡超慢的工作嗎?

對此有何建議?

回答

1

您可以爲所有隊列的應用程序定義一個全局常量。

QUEUES={ 
    mailers: 'mailers', 
    etc.. 
} 

然後使用你的延遲的方法,這種不斷調用

object.delay(queue: QUEUES[:mailers]).do_something 

,並嘗試建立delayed_job_args dinamically

system("RAILS_ENV=production script/delayed_job --pool=super_slow_stuff --pool:#{(QUEUES.values-[super_slow_stuff]).join(',')}:number_of_workers start")