有沒有什麼辦法可以告訴sidekiq一個工作是依賴於另一個工作,直到完成後才能啓動?有沒有什麼辦法可以告訴sidekiq一個工作是依賴於另一個工作
5
A
回答
4
您可以定義工作的依賴性:
# config/initializers/superworkers.rb
Superworker.create(:MySuperworker, :user_id) do
Worker1 :user_id
Worker2 :user_id
end
# Anywhere
MySuperworker.perform_async(123)
當您運行MySuperworker,Worker1將啓動。完成後,Worker2將開始。這使您可以將依賴關係圖與工作人員分開。 (免責聲明:我是寶石的作者。)
5
只使用Sidekiq;答案是否定的。正如DickieBoy所建議的那樣,當依賴作業完成時,您應該能夠將其啓動。像這樣的東西。
# 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
這裏LazyWorker只運行在HardWorker的結尾;如果不總是需要,可以添加額外的邏輯; LazyWorker仍然可以在需要時直接調用。這應該適用於大多數(如果不是全部)用例;和Sidekiq一起,這真的是你唯一的選擇,除非你拉入其他的寶石。
當直接從另一個工作射擊不夠好......
如果你正在做的事情在那裏,這將無法正常工作,你應該考慮一個狀態機。當一個工作被解僱時,它會創建一個自己的記錄,可能還有一個ID,並且可能有運行,失敗,已完成,等待狀態。然後,依賴作業可以輕鬆地檢查狀態表中的一個或多個依賴關係,並確保它的所有依賴關係都得到滿足。
你依賴的工作可以做一個查找表,狀態表使用Sidekiq Superworker依賴
相關問題
- 1. 有沒有什麼辦法可以讓我的C#XMLManager工作?
- 2. JS在一個地方工作,但沒有另一個工作
- 3. 有沒有辦法告訴HtmlUnit抓住所有依賴
- 4. 有沒有什麼辦法可以讓jquery和node.io一起工作?
- 5. 告訴Sidekiq使用所有可用的Heroku工作人員
- 6. 有沒有辦法將Android項目從一個工作區移動到另一個工作區
- 7. 有人能告訴我爲什麼這些JavaScript代碼中的一個工作,而其中一個不工作?
- 8. 爲什麼我有一個工作的scrollPanel和另一個不工作?
- 9. 有人可以告訴我一個好的依賴矩陣是什麼樣子,並指定爲什麼?
- 10. 有沒有什麼辦法可以用一個拇指作爲另一個拇指的來源?
- 11. 爲什麼一個JavaScript關閉工作,另一個不工作?
- 12. 有沒有什麼辦法可以暫停工作並從jenkins的那個位置恢復工作?
- 13. 是有可能有依賴於在c#另一個構件
- 14. 有人可以告訴我,爲什麼這個批處理腳本不工作?
- 15. Scala Netty有沒有什麼辦法可以共享一個ReplayingDecoder
- 16. Javascript - 爲什麼一個document.getElementById()可以工作,而不是另一個?
- 17. 爲什麼一個Web API方法可以工作,而另一個則不行?
- 18. Autosys:實現在一個盒子裏有兩個工作依賴
- 19. 一個工作簿中的宏是否可以更改另一個工作簿?
- 20. Excel中有沒有辦法編輯另一個工作表中的選定行?
- 21. PHP可以有一個線程工作?
- 22. 爲什麼一種方法對於一個動作完美地工作而不爲另一個工作?
- 23. 有什麼辦法可以重疊另一個CSS?
- 24. 有沒有辦法`執行`一個依賴項神器?
- 25. maven不能和我一起工作,有沒有依賴失蹤?
- 26. 有沒有辦法告訴程序是否仍在運行一個方法?
- 27. 有沒有什麼辦法可以配置tomcat servlet的工作目錄?
- 28. 爲什麼一個php語句可以工作而另一個不可用?
- 29. 爲什麼一個ko.mapping.fromJS工作而另一個不是?
- 30. 爲什麼一個使用toWidget的工作,另一個不是
你不能有你的第一份工作啓動從屬工作嗎? – DickieBoy
沒有。不幸的是,它不能以這種方式處理 –