我们有一个生成报告的模型。
每个报告都非常复杂,可能需要很长时间才能加载。因此,我们正在使用delayed_job
在后台执行此操作。
一切都在我的本地计算机上运行,但在我们的生产环境中,作业随机消失。它们在delayed_job.log
中甚至不存在成功或失败。创建了延迟作业,但有时会删除它们而不会抛出任何错误或完成工作。
这是我们模型中的方法:
def generate_html
ac = DelayedJobsController.new()
tmp_html = ac.render_to_string partial: self.partial_path, object: self
self.update_attributes(html: tmp_html, done: true)
end
handle_asynchronously :generate_html
答案 0 :(得分:0)
经过大量工作,我们发现了问题。
当我们运行crontab -l
和ps aux
时,我们看到两个delayed_job实例正在运行。在我们杀死其中最老的一个之后,所有人都应该这样做。