2015-12-04 28 views
1

我在使用我的Rails應用程序delayed_job。這裏是我的代碼:延遲工作的神祕運行時間

run_at = 4.hours.from_now 
# run_at is actually a calculation according to timezone and other stuff 
MyModel.delay(run_at: run_at).create(some_params) 

神祕,昨天晚上,我的工作直接開始。這意味着2件可能的事情:

  1. run_at基本上是now或過去。
  2. DelayedJob模型做了延遲。

我檢查了3次計算。 run_at昨天晚上不等於now

昨天大約在同一小時和一半左右發生了這個問題。 其實這是2次2個不好的延遲任務。

供參考:昨天晚上我沒有重啓我的服務器。

DelayedJob可能會擠壓我的跑步時間嗎?

編輯 我檢查了我的數據。我存儲了假定的開始工作的確切時間。它在過去......我的錯誤。

+0

您是在實際生產日誌中檢查計算結果還是僅通過查看代碼?服務器可能有不同的時區設置或過時tzdata – Vasfed

+0

我現在檢查它。我沒有找到任何關於'DelayedJob'創建的文本。但是,我的數據庫中存儲的數據告訴它已經延遲..在確切的時間(h:m:s)調用方法。是否可以在不看到任何創建的'DelayedJob'數據庫行的情況下調用'run_at'?我的生產服務器上的時區正常。我檢查了它。 – BriceB

+0

對db的查詢記錄在':debug'日誌級別,生產默認值是':info',所以這是正常的 – Vasfed

回答

1

我的不好,這個任務應該是在過去運行(run_at < now)。這就是它立即開始的原因。