2014-05-09 15 views
8
scheduler = Rufus::Scheduler.new :lockfile => ".rufus-scheduler.lock" 

scheduler.every("60") do 
... 
end 

Środowisko: Ubuntu, szyny 4, rudy, Unicorn, nginxProgram planujący Rufusa działający wielokrotnie z jednorożcem, naprawiony za pomocą: pliku blokującego, ale jak wyeliminować błąd msg?

Unicorn ma wielu pracowników, więc powyższe 'każdy' zadanie będzie wykonywane wiele razy co 60 sekund.

Zgodnie z odpowiedzią na ten: rufus scheduler running twice each time , dodałem: opcja pliku blokującego i działa!

Jednak z dziennika, wydaje się, że „każdy” zadanie wciąż próbuje nazwać, w wyniku czego wiele komunikatów o błędach:

E, [2014-05-09T01:59:47.496840 #2747] ERROR -- : cannot schedule, scheduler is down or shutting down (Rufus::Scheduler::NotRunningError) 
/home/sohmobile/shared/bundle/ruby/2.1.0/gems/rufus-scheduler-3.0.7/lib/rufus/scheduler.rb:605:in `do_schedule' 
/home/sohmobile/shared/bundle/ruby/2.1.0/gems/rufus-scheduler-3.0.7/lib/rufus/scheduler.rb:209:in `every' 
/home/sohmobile/releases/20140509014407/config/initializers/task_scheduler.rb:3:in `<top (required)>' 

Jak mogę rozwiązać ten problem?

Z góry dziękuję.

Odpowiedz

15

To może rozwiązać swój problem:

require 'rufus-scheduler' 

scheduler = Rufus::Scheduler.new(:lockfile => ".rufus-scheduler.lock") 

unless scheduler.down? 

    scheduler.every("60") do 
    # ... 
    end 
end 
+0

Dziękuję bardzo, Panie! To działa jak urok. – user3618929

+0

Jeśli tak jest, zaakceptuj moją odpowiedź i zagłosuj na nią. Z góry dziękuję :-) – jmettraux