Bir işin diğerine bağımlı olduğunu ve ikincisi tamamlanana kadar başlatılamayacağını söylemek için bir yol var mı?sidekiq'e bir işin başka birine bağımlı olduğunu söyleme yolu var mı
cevap
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.)
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
İlk işiniz bağımlı işi başlatamaz mı? – DickieBoy
no. maalesef bu şekilde ele alınamaz –