2013-07-18 20 views
2

Sidekiq wiki中指出:Sidekiq工作要花多長時間?

  1. 讓你的工作小而簡單的

我得到簡單的,我得到冪和交易,但什麼是小?也許需要內存和計算時間是一個很好的措施?我的Sidekiq工作時間爲10秒至30分鐘

我認爲10秒是可以的,但30分鐘長時間運行的任務呢?我將數據庫中某個類型的所有數據加載到內存中,對它們執行冗長的計算,然後寫回結果。一件工人工作中的所有三件事。

這樣很好嗎?或者我應該從一個工作作業調用多個運行小計算的工作作業?問題是,這些小型計算可能需要一些複雜的哈希表來進行計算,並且建議不要在Redis中堅持這一點,只有簡單的小值。

回答

6

這取決於你想要/不得不調用這個工作的頻率以及它是否可以接受需要這麼長時間。

如果以較短的時間間隔運行作業比完成作業時間太長。

分割它分成多個工人只會有助於在這裏,如果你能提高總的運行時間(例如,如果它的一些可以在同一時間運行)拇指

所以規則一如既往:只要它適合你的需要它沒關係。

但是:

  • 長的工作,你應該考慮的是,作業可能會失敗中期執行無論出於何種原因(服務器崩潰等)。
  • 你還能繼續這麼長時間的工作還是會被正確回滾?
  • 另外:如果在執行作業時數據發生了變化,會發生什麼情況?