我目前在我的模型中有一种方法可以抓取网站并将记录插入数据库。
def self.scrape
#scrape
#insert into database
end
我设置了一个 Controller 方法来调用它:
def scrape
Website.send_later(:scrape)
end
抓取工作正常,并通过控制台运行对其进行了测试。但是,通过调用 Controller 方法激活它来运行它不起作用。
我试过
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 ...
我在应该插入数据的数据库表中看不到任何内容。
最佳答案
作为确定作业是否已运行并完成的一种方法,您可以使用延迟作业提供的 Hook 将小记录写入作业状态模型。在这种情况下,有一些钩子(Hook)可能有用,最有趣的是:
def after(job)
record_stat 'newsletter_job/after'
end
有类似的成功和完成,你可以类似地使用。我意识到这可能比你想要的要重,但它会做你想做的事,并且可能值得付出代价。 delay_job 表似乎没有像您想要的那样包含足够的信息。
关于ruby-on-rails - 如何知道delayed_job 什么时候完成了它的工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7063760/