deliver_later
経由でメールを送信しているHeroku 4アプリがあります。 Sidekiqは動作しており、私の設定にはconfig.active_job.queue_adapter = :sidekiq
があります。エラー:Herokuで1秒間に多くの電子メールが届いています
また、ログ[ActiveJob] [ActionMailer::DeliveryJob]
でこれを見ると、メールがバックグラウンドジョブとして送信されていると思われます。
なぜ、1秒間にあまりにも多くのメールについてエラーが発生するのですか?
Net::SMTPUnknownError: could not get 3xx (550: 550 5.7.0 Requested action not taken: too many emails per second
私はちょうど私がsidekiq同時実行が3に設定しているたぶんそれが問題だ気づきましたか? 1つの修正問題への同時実行を設定するが、私はすべてのジョブを単一の作業員によって処理されないようにする:
あなたの言うことはすべて真です。私の最初の解決策は、ランダムな遅延を使用することでしたが、ハックのように感じられ、遅延が気に入らなかった。だから今私の解決策は、私のメーラーキューをそれ自身のdynoに入れ、並行性を1に設定することです。まだハックしますが、ハッキリしていないように感じます。 heh – Dty
ActionMailerでエラーをキャッチして再試行してみるとよいでしょう。これはうまくいくかもしれません:あなたのメーラーを処理するためにSidekiqジョブを使用し、 'deliver_later'の代わりに 'deliver_now'でメーラーに電話をかけ、Sidekiqにこれらのエラーをキャッチして再試行させます。 (また不自然に見えます:/) – niborg
別のプロジェクトでも同様のことが起こっています。 Sidekiqは問題を残さずに1年以上にわたりエラーを再試行していますので、修正することは決してありません。 – Dty