2

これについて他の質問を見たことがありますが、確認しました。配達を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通のメールを受け取ります。そのため、メールの送信が遅れます。しかし、それを2回送信します。電子メールは2回送信されます。なぜですか?

4

1 に答える 1

0

以前に同じ問題があり、この質問を見つけました。これが解決策でした(私の問題の)。

実行している遅延ジョブ ワーカーの数を確認します。

ps -ef | grepdelayed_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

次に、特定のプロセスを停止します (script/delayed_job stop の呼び出しが失敗した場合)

殺す -9 18848

于 2013-09-25T10:12:17.447 に答える