ruby on rails -延迟的作业不发送邮件-如何调试



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

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 ..

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

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

另一个调试DelayedJob的好方法是gem 延迟作业Web(参见https://github.com/ejschmitt/delayed_job_web),它为您提供了一个"类似延迟作业的Web界面",可通过http://localhost:3000/delayed_job访问。该界面提供了一个"Failed Jobs"选项卡,在这里您可以比在终端中更方便地调查"last error"字段。

最新更新