2016-10-07 63 views
3

如何在使用延遲作業時爲特定隊列指定一名工作人員?我知道我可以運行此命令:如何在隊列中爲延遲作業指定一名工作人員

# Use the --pool option to specify a worker pool. You can use this option 
# multiple times to start different numbers of workers for different queues. 
# The following command will start 1 worker for the tracking queue, 
# 2 workers for the mailers and tasks queues, and 2 workers for any jobs: 

RAILS_ENV=production script/delayed_job --pool=tracking --pool=mailers,tasks:2 --pool=*:2 start 

但由於我們正在使用的Heroku,我們使用的是將管理我們的工人procfile:

worker: bundle exec foreman start -f Procfile.workers和我們的工人文件運行工作:

worker_1: bundle exec rake jobs:work 
worker_2: bundle exec rake jobs:work 

什麼,我想不過的事情,是這樣的:

bundle exec rake jobs:work --queue=specific_queue 

和鄰只有一名工作人員正在處理specific_queue和其他工作在其他隊列中的工作人員。

我該如何做到這一點?

+0

我的答案是否適合你? –

回答

2

如果你看看Heroku的Process Types and the Procfile文檔,你將在年底找到this例如:

例如,使用Ruby可以運行兩種類型隊列的工人,每個 消耗不同的隊列:

worker:  env QUEUE=* bundle exec rake resque:work 
urgentworker: env QUEUE=urgent bundle exec rake resque:work 

延遲作業使用與Resque類似的內容。它使用env變量QUEUE或QUEUES來指定該特定worker的隊列。

您可以驗證,在lib/delayed/tasks.rbsource code

+0

它的確如此。謝謝 –

相關問題