任何人都可以解釋如果在兩週內安排的delayed_job失敗,將在下面的代碼中發生什麼?在交易中包裝延遲工作對Rails應用程序的影響
我的理解是,整個事務將一直存在於內存中,直到事務成功運行或耗盡允許的嘗試次數(即事務不僅僅保證作業本身被創建)。我對麼?如果任何人也可以詳細說明這種結構的影響(即內存泄漏,競態條件,性能等)和潛在的改進,將不勝感激!
...
def process
old_user.transaction(requires_new: true) do
begin
update_user_attributes
TransferUserDataJob.new(old_user, new_user).delay(run_at: 14.days.from_now, queue: 'transfer_user_data_queue').perform
raise ActiveRecord::Rollback if user.status.nil?
rescue Exception => e
raise ActiveRecord::Rollback
end
end
...