2013-12-10 22 views

cevap

4

için devlet tabloda bir göz yukarı yapabileceği konum:

# config/initializers/superworkers.rb 
Superworker.create(:MySuperworker, :user_id) do 
    Worker1 :user_id 
    Worker2 :user_id 
end 

# Anywhere 
MySuperworker.perform_async(123) 

sen MySuperworker çalıştırın worker1 başlayacaktır. İş bittiğinde, Worker2 başlayacaktır. Bu, bağımlılık grafiğini işçilerin kendilerinden ayırmanızı sağlar. (Feragatname: Ben geminin yazarıyım.)

5

Sadece Sidekiq kullanarak; cevap hayır olurdu. DickieBoy'un önerdiği gibi, bağımlı iş tamamlandığında sadece tekmelemeniz gerekir. Böyle bir şey.

# app/workers/hard_worker.rb 
class HardWorker 
    include Sidekiq::Worker 

    def perform() 
    puts 'Doing hard work' 
    LazyWorker.perform_async() 
    end 
end 

# app/workers/lazy_worker.rb 
class LazyWorker 
    include Sidekiq::Worker 

    def perform(name, count) 
    puts "Guess it's time I do something" 
    end 
end 

Burada LazyWorker yalnızca HardWorker'ın sonunda çalışır; Bu her zaman gerekli değilse ek mantık eklenebilir; LazyWorker, gerektiğinde doğrudan çağrılabilir. Bu, tüm kullanım durumları değilse çoğu için çalışmalıdır; ve Sidekiq ile başka bir gem çekmezseniz gerçekten tek seçenek.


başka bir iş doğrudan ateş yeterince iyi değil ...

Bu bir devlet makinesini düşünmelisiniz çalışmaz şey yapıyorsanız. Bir iş kovulduğunda, muhtemelen bir ID ile birlikte bir kayıt oluşturur ve koşma, başarısız olma, tamamlanma, bekleme halleri olabilir. Bağımlı iş daha sonra durum tablosundaki bir veya daha fazla bağımlılığı kolayca kontrol edebilir ve tüm bağımlılıklarının yerine getirildiğinden emin olabilir.

Sen bağımlı iş Sidekiq Superworker kullanarak Sen iş bağımlılıkları tanımlayabilirsiniz bağımlılık

İlgili konular