【问题标题】:Delayed_job is not working correctlyDelayed_job 工作不正常
【发布时间】:2026-02-14 02:50:01
【问题描述】:

我实施了延迟作业,它处理得很好,但它在 development.log 中而不是在 production.log 中生成邮件。

实际上也没有发送邮件,它只是在开发日志中生成。处理后,我在延迟作业表中也没有作业。

我也使用了RAILS_ENV=production rake jobs:work,但邮件仍在开发日志中,实际上并未发送;我在 Ubuntu 上使用邮件服务器发送邮件。

我注意到rake jobs:work默认使用开发日志不知道生产服务器是否也一样?

如果有人知道这个问题,请尽快回答,因为我的应用程序因此在生产服务器上卡住了,很多邮件只是进入开发日志,实际上并没有发送给最终用户。

【问题讨论】:

  • 在文件config/initializers/delayed_job.rb 中添加Delayed::Worker.destroy_failed_jobs = false 并重新启动应用程序/服务器。设置不会删除任何有错误的作业,这可能有助于缩小问题的范围。查找有错误的工作:select id,last_error from delayed_jobs where last_error is not null;。您不应该在生产中使用rake jobs:work。最好为它制作一个监控文件。
  • 我正在使用 RAILS_ENV=production rake jobs:work 但在此之后邮件仅在开发日志中,但实际上它们并未发送给接收者

标签: ruby-on-rails delayed-job


【解决方案1】:

这可能很明显,但是在你的 config/production.rb 中,你设置了吗

    config.action_mailer.delivery_method = :smtp

可能您在 config/development.rb 中设置了交付方式,但在生产环境中忘记了这样做。请告诉我,以便我提供进一步帮助!

【讨论】: