2014-03-04 47 views
0

我使用queue_classic的後臺作業,
我需要監控後臺作業在生產中即啓動,停止等
我發現similar question但它並沒有幫助我
另外,我發現了上帝的代碼:
但我怎麼會停下來,重新啓動工人?如何監控生產的後臺作業,queue_classic

number_queues.times do |queue_num| 
    God.watch do |w| 
    w.name = "QC-#{queue_num}" 
    w.group = "QC" 
    w.interval = 5.minutes 
    w.start = "bundle exec rake queue:work" # This is your rake task to start QC listening 
    w.gid = 'nginx' 
    w.uid = 'nginx' 
    w.dir = rails_root 
    w.keepalive 
    w.env = {"RAILS_ENV" => rails_env} 
    w.log = "#{log_dir}/qc.stdout.log" # Or.... "#{log_dir}//qc-#{queue_num}.stdout.log" 

    # determine the state on startup 
    w.transition(:init, { true => :up, false => :start }) do |on| 
     on.condition(:process_running) do |c| 
     c.running = true 
     end 
    end 
    end 
end 

UPDATE
此代碼似乎不起作用

namespace :queue_classic do 
    desc "Start QC worker" 
    task :start, roles: :web do 
    run "cd #{release_path} && RAILS_ENV=production bundle exec rake qc:work" 
    end 
    after "deploy:restart", "queue_classic:restart" 
end 

回答

0

正如documentation,你可以重新啓動你的工人發出

god restart QC-<worker_number> 

其中QC-<worker_number>這個名字說你分配給你的工人

0

根據您需要的監視類型,您可能還會看到Toro,它提供了大量的監視功能,無論是在Web界面中,還是作業存儲大量數據並且可以使用查詢輕鬆進行查詢ActiveRecord查詢。 Toro還支持中間件,這可能對您的需求有用。