【问题标题】:Delayed job not sending mails - How to debug?延迟作业不发送邮件 - 如何调试?
【发布时间】:2013-03-05 06:11:30
【问题描述】:

我使用以下设置延迟了作业设置:

Delayed::Worker.max_attempts = 3
Delayed::Worker.delay_jobs = !Rails.env.test?
Delayed::Worker.destroy_failed_jobs = false
Delayed::Worker.sleep_delay = 120

我已经启动了一个 worker,在开发中工作并配置了 ActionMailer 来发送邮件。

我也在控制器中使用以下内容调用它:

OrderMailer.delay.order_notification(@order)

我可以看到在 Mongo 中创建的作业,它们在控制台中没有显示任何错误,我如何找出是否有任何错误?是否有某种工作日志?

我在控制台中得到以下信息:

1 jobs processed at 3.6244 j/s, 0 failed ..

【问题讨论】:

  • 我也遇到了同样的问题,你解决了吗?

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


【解决方案1】:

另一个调试 DelayedJob 的好方法是 gem Delayed Job Web(请参阅 https://github.com/ejschmitt/delayed_job_web),它为您提供“Resque 类延迟作业的 Web 界面”,可通过http://localhost:3000/delayed_job 访问。界面提供了一个“Failed Jobs”-Tab,在这里可以调查“最后一个错误”-Field,比在终端更方便...

【讨论】:

    【解决方案2】:

    应该有一个log/delayed_job.log 列出已处理的作业。您还可以使用数据库来访问失败任务的错误。

    >> failed_jobs = Delayed::Job.where('attempts > 0')
    >> failed_jobs.first.last_error
    

    【讨论】:

    • failed_jobs 返回 0,因此作业被视为成功,但邮件未送达。
    • 那么错误是在你的邮件而不是 dj。打开动作邮件程序中的错误调试。将此添加到您的配置文件中config.raise_delivery_errors = true
    • config.action_mailer.raise_delivery_errors = true ,顺便说一句,当我禁用 dj 时邮件发送。
    猜你喜欢
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 2011-09-15
    • 2012-03-18
    • 1970-01-01
    • 1970-01-01
    • 2012-10-11
    • 2012-11-17
    相关资源
    最近更新 更多