如何知道delay_job完成工作的时间?

Tee*_*eej 5 screen-scraping ruby-on-rails delayed-job

我的模型中目前有一种方法可以抓取网站并将记录插入数据库。

def self.scrape
  #scrape
  #insert into database
end
Run Code Online (Sandbox Code Playgroud)

我设置了一个控制器方法来调用它:

def scrape
  Website.send_later(:scrape)
end
Run Code Online (Sandbox Code Playgroud)

抓取工作正常,并且已通过控制台运行它进行了测试。但是,通过调用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 ...
Run Code Online (Sandbox Code Playgroud)

我在数据库表中看不到应该插入数据的任何内容。

小智 2

作为确定作业是否已运行并完成的一种方法,您可以使用delayed_job提供的挂钩将一条小记录写入job_status模型。在这种情况下,有一些钩子可能有用,最有趣的是:

def after(job)
  record_stat 'newsletter_job/after'
end
Run Code Online (Sandbox Code Playgroud)

有类似的成功和完成,您可以类似地使用。我意识到这可能比您想要的重,但它会满足您的需求并且可能值得付出代价。Delayed_job 表似乎没有包含足够的信息来满足您的需求。