2011-08-15 61 views
4

我目前在我的模型中有一個方法來刮取網站並將記錄插入數據庫。如何知道delayed_job何時完成其工作?

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 ... 

我看不出在數據庫表中應具有插入的數據什麼。

回答

2

作爲找出作業是否已經運行並完成的一種方法,您可以使用由delayed_job提供的掛鉤將小記錄寫入job_status模型。有幾個掛鉤,可能是在這種情況下有用,最有趣的是:

def after(job) 
    record_stat 'newsletter_job/after' 
end 

有成功和完成,你可以同樣使用類似的。我意識到這可能比你想要的要重,但它會做你想做的事,並且可能是值得的。 delayed_job表似乎沒有足夠的信息,因爲你想要的東西。

相關問題