我目前在我的模型中有一个方法来刮取网站并将记录插入数据库。
def self.scrape
#scrape
#insert into database
end
我设置了一个控制器方法来调用它:
def scrape
Website.send_later(:scrape)
end
抓取工作正在运行,并通过控制台运行测试。但是,通过调用控制器方法激活它来运行它不起作用。
我已经尝试rake jobs:work
它说了以下内容:
[Worker(host:thorpe-desktop pid:6962)] Starting job worker
[Worker(host:thorpe-desktop pid:6962)] Class#scrape completed after 0.5068
[Worker(host:thorpe-desktop pid:6962)] 1 jobs processed at 0.5898 j/s, 0 failed ...
我没有在数据库表中看到应该插入数据的任何内容。
答案 0 :(得分:2)
作为判断作业是否已运行并完成的方法,您可以使用delayed_job提供的钩子将小记录写入job_status模型。在这种情况下有一些可能有用的钩子,最有趣的是:
def after(job)
record_stat 'newsletter_job/after'
end
有类似的成功和完成,你可以使用类似的。我意识到这可能比你想要的更重,但它会做你想要的,可能是值得的。 delayed_job表似乎没有足够的信息来保存你想要的信息。
答案 1 :(得分:1)
此问题polling with delayed_job很好地描述了如何跟踪延迟作业何时完成。