簡體   English   中英

Rails:當控制器完成執行時使用郵件程序發送郵件

[英]Rails:Send mail using mailer when controller finishes its execution

我正在使用一個按鈕報告濫用 ,點擊哪個ajax調用轉到控制器,並在 數據庫中的 濫用 插入后,它返回成功。 在成功響應時,它在UI主題上顯示為濫用。 現在我想向管理員發送有關此內容的郵件 我已經在控制器中集成了郵件程序 ,即執行成功郵件程序代碼並將郵件發送給管理員。

現在的問題是發送郵件需要花費太多時間 ,所以我的ajax響應時間也會增加 我想要的是郵件程序代碼應該在控制器發送其響應 后執行 ,以便響應時間減少。

謝謝

處理此問題的一種簡單方法是創建一個線程來處理電子郵件。 簡單地說:

Thread.new do
  SomeMailer.some_method.deliver
end

在單獨處理線程時,您的控制器操作將繼續並完成Ajax響應。 請記住,如果您的郵件程序有廣泛的處理,那么它可能會失敗(如果沒有記錄線程,它將不會出現任何日志錯誤),如果仍然處理超出完成主控制器操作的時間。 這只會在開發中發生,因為類在完成時未實例化。 要解決此問題,只需在development.rb中更改:

config.cache_classes = true

您也可以使用后台作業流程,但是對於較輕的負載,Threads工作得很好並且易於實現。

你嘗試過使用delayed_job嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM