2014-05-19 52 views
5

當讀取Sidekiq Wiki我看下面的例子:Sidekiq中perfrom_async和延遲有什麼區別?

Getting started

發送消息異步處理:

HardWorker.perform_async('bob', 5) 

您也可以通過調用延遲的方法發送消息上課方法:

User.delay.do_some_stuff(current_user.id, 20) 

此外,從Delayed extensions

使用延遲交付你的電子郵件是異步的。使用delay_for(間隔)或delay_until(時間)在將來某個時間發送電子郵件。

UserMailer.delay.welcome_email(@ user.id) UserMailer.delay_for(5.days).find_more_friends_email(@ user.id) UserMailer.delay_until(5.days.from_now).find_more_friends_email(@ user.id )

那麼實際上perfrom_asyncdelay之間的區別是什麼?在哪種情況下我會比較喜歡那種?

回答

3

perform_async是Sidekiq的原生API。延遲是與DelayedJob兼容的API。儘可能使用perform_async。

+0

在Mail對象上爲你自動調用'.deliver'還是哪一個不自動調用? – Andrei

+1

ActionMailer電話的延遲爲您提供。 perform_async是通用的後臺調用,您需要在執行方法中調用遞送。 –

+1

「儘可能使用perform_async」@MikePerham那麼,爲什麼ActiveRecord和ActionMailer建議使用文檔(https://github.com/mperham/sidekiq/wiki/Delayed-extensions)暗示延遲? – ChrisH