【问题标题】:Rails ActiveJob - What's the good way to handle exception in ActionMailer::DeliveryJobRails ActiveJob - 在 ActionMailer::DeliveryJob 中处理异常的好方法是什么
【发布时间】:2016-02-12 07:07:14
【问题描述】:

我在我的 Rails 项目中使用ActiveJob + Sidekiq 进行任务处理。

我直接使用MyMailer.some.deliver_later 发送邮件。它将自动创建一个ActionMailer::DeliveryJob 任务并将其放入Sidekiq 队列中。

问题是,从那里处理异常有什么好处?

最好的问候。

【问题讨论】:

  • @KhAmmad 是的,我读过这个。这是否意味着您建议使用config.error_handlers 处理它?
  • 其实你不应该处理异常,你应该让它失败,然后sidekiq会为你挽救错误,并将作业标记为失败。如果你想收到一些通知,你可以使用一些服务,比如 Airbrake 或 Honeybadger 或 Sentry。
  • 是的,使用config.error_handlers,您可以添加自己的句柄。
  • @YuryLebedev 有时用户输入了一个奇怪的错误电子邮件地址,我的邮件服务提供商返回501 SMTP command error,sidekiq 将继续尝试。

标签: ruby-on-rails exception actionmailer sidekiq rails-activejob


【解决方案1】:

根据http://edgeguides.rubyonrails.org/active_job_basics.html,我认为最好的方法是在初始化程序中为ActionMailer::DeliveryJob 设置异常错误处理程序,类似于:

ActionMailer::DeliveryJob.rescue_from(Net::SMTPSyntaxError) do |exception|
  unless ['501 Command parsing failed'].include?(exception.message.strip)
    raise exception
  end
end

【讨论】:

    猜你喜欢
    • 2016-06-12
    • 1970-01-01
    • 2019-06-21
    • 1970-01-01
    • 2011-04-29
    • 2012-03-29
    • 2020-02-06
    • 1970-01-01
    • 2011-08-03
    相关资源
    最近更新 更多