2016-07-19 32 views
0

我想知道在worker上調用perform_async時發生了什麼,但是sidekiq(bundle exec sidekiq)沒有運行?當perform_async被調用但sidekiq沒有運行時會發生什麼?

在我的應用程序中,我有一些觀察員在我的某個模型觸發(即在某些情況下創建,更新或銷燬)時要求sidekiq做一項工作。

我也有我的建立從一些數據我有。當這個任務運行的數據庫rake任務,它會創建一些記錄觸發我的觀察家誰那麼sidekiq排隊推動工作。

爲了測試目的,我運行這個任務時沒有打開sidekiq,它工作正常,我的數據被推入mysql!

我知道問自己我的觀察員告訴我的工作人員要做什麼工作?它仍然完成?它是否完成,但不是異步?是否不是完成?

回答

1

簡單的答案:它沒有完成。稍後將

正如它的名字就自做的是說它把它放在一個que。當您打開sidekiq時,它將讀取que中的所有數據並執行所有任務。

但對於這個工作,你需要有Redis工作。 Redis負責將數據保存在一個隊列中,這是一種內存。如果沒有Redis,您會收到錯誤消息。

+0

因此,這意味着,直到我打開sidekiq,這一切存儲在Redis的服務器,它會推動他們當它打開來sidekiq? – Naarsh

+0

是正好,這就是爲什麼它是很好的,爲什麼它被稱爲異步 – Nermin

+0

好吧!非常感謝,非常有幫助:) – Naarsh

相關問題