使用delayed_job发送两次电子邮件

时间:2013-02-16 10:40:59

标签: ruby-on-rails-3 actionmailer delayed-job

我已经看到了有关此问题的其他问题,但我查了一下,而且我没有给两次致电。

这是我的邮件

class Suggestion < ActionMailer::Base
  default from: "me@myapp.com"

  def send_suggest(subject, body, sender, ref)

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

    mail(:to => "mail@myapp.com", :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被调用一次。我可以看到工头,工人处理电子邮件。

进一步调查此问题。我将delay更改为delay(queue: "Suggestions", priority: 20, run_at: 5.minutes.from_now)

5分钟后,我会收到2封电子邮件。因此发送电子邮件会延迟。但然后发送两次 电子邮件发送两次。知道为什么吗?

1 个答案:

答案 0 :(得分: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停止失败)

kill -9 18848