2013-02-16 125 views
2

我已經看到關於此問題的其他問題,但我查了一下,而且我沒有撥打兩次電話。用delayed_job發送電子郵件兩次

這是我的郵件

class Suggestion < ActionMailer::Base 
    default from: "[email protected]" 

    def send_suggest(subject, body, sender, ref) 

    @sender = sender 
    @body = body 
    @ref =ref 

    mail(:to => "[email protected]", :subject => "#{subject} from #{sender}") 
    end 
end 

這會從建議控制器

def create 

     if (!current_user.nil?) 

      sender = current_user.email 

     end 
     subject = params[:subject] 
     body = params[:description] 
     Suggestion.delay.send_suggest(subject, body, sender, request.referer) 
     respond_to do |format| 
      format.js { render :nothing => true } 
     end 
    end 

發送,你可以看到,delay被調用一次。我可以看到工頭處理電子郵件。

進一步調查這個..我改變delaydelay(queue: "Suggestions", priority: 20, run_at: 5.minutes.from_now)

,並在5分鐘後,我會收到2電子郵件。所以發送電子郵件的時間推遲。但發送兩次 電子郵件發送兩次。任何想法爲什麼?

回答

0

先前有同樣的問題,發現這個問題。這是解決方案(針對我的問題)。

檢查您正在運行的延遲作業工的數量。

ps -ef | grep的delayed_job的

root  18848  1 0 Aug27 ?  00:23:24 delayed_job 
root  20104  1 0 Aug26 ?  00:23:54 delayed_job 
root  21805  1 0 Aug27 ?  00:23:15 delayed_job 

然後停止特定的進程(如果調用腳本/ delayed_job的停止失敗)

殺-9 18848