2

我已经看到有关此的其他问题,但我检查了,并且我没有两次调用交付。

这是我的邮件

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 封电子邮件。所以发送电子邮件会延迟。但随后发送两次电子邮件被发送两次。知道为什么吗?

4

1 回答 1

0

之前有同样的问题,发现了这个问题。这是解决方案(对于我的问题)。

检查您正在运行的延迟作业工人的数量。

ps -ef | grep 延迟作业

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

然后停止具体进程(如果调用 script/delayed_job stop 失败)

杀死-9 18848

于 2013-09-25T10:12:17.447 回答