延迟作业在开发中有效,但在生产中无效
-
20-09-2019 - |
题
我的应用程序使用 延迟工作的集体思想叉 异步发送电子邮件。问题是这在开发环境中运行良好,但在生产环境中却不起作用。这些工作并没有失败(我已经检查过 delayed_jobs
表),它们只是没有被消耗。生产日志中没有任何值得注意的内容。
这是该内容的内容 handler
内的列 delayed_jobs
桌子:
--- !ruby/struct:Delayed::PerformableMethod \
object: CLASS:FeedbackMailer\
method: :deliver_message\
args: \
- AR:Message:6\
——我看不出有什么问题。这是我的 FeedbackMailer
班级:
class FeedbackMailer < ActionMailer::Base
def message(message, sent_at = Time.now)
subject = 'New Feedback Message'
subject = "#{subject}: #{message.subject}" if message.subject.present?
subject subject
recipients 'me@example.org'
from 'feedback@example.org'
sent_on sent_at
body :message => message
end
end
最后,这是我的相关方法 Message
班级:
def send_email
FeedbackMailer.send_later(:deliver_message, self)
end
我知道 ActionMailer 代码在生产中可以正常工作,因为我在切换到延迟作业之前已经对其进行了同步测试。正如我所说,我还通过在开发中成功使用延迟作业来运行它。
如果我运行 top
在服务器上运行命令后,我可以看到延迟作业 Ruby 进程每五秒活跃一次。我该如何调试这个?
解决方案
约翰,
虽然我也用集体观念叉,我发现托比的脚本工作过。我只是需要一个TMP / PID目录(你可以有),你得到的日志文件,并可以交叉引用与你的错误列在您的延迟:: Job.first纪录说,这个文件(或它当然是什么工作) 。脚本运行从TOBI叉一个守护进程
哦,你没有重新启动,如果所做的更改吗?不得不要求。
其他提示
您与-e production
标志集运行./script/delayed_job?
有什么东西出现在 日志/delayed_job.log?您提到了生产日志,但延迟作业有自己的日志。
- [JOB] 获取 PreviewImageJob 上的锁定
您可以尝试创建一个单独的类,而不是使用 _later() 方法。
class PreviewImageJob < Struct.new(:item_id)
def perform
item = Item.find(item_id)
item.generate_interior_images!
end
end
不隶属于 StackOverflow