2017-06-28 60 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")