我想刮一些網站&我希望這應該由單獨的工作進程完成。我開始瞭解延遲工作在後臺工作。我在我的rails應用程序中使用了collectiveidea/delayed_job。我遵循rails 3.0 &活動記錄的安裝步驟。延遲工作不工作
之後我在lib文件&中創建了一個dj.rb,代碼如下。
require 'nokogiri'
require 'open-uri'
class Dj_testing
def perform
#code for scraping the site
#code to add entry into database
end
end
現在之後,我用下面的命令來啓動工作
腳本/ delayed_job的開始
耙作業:工作
我的工作人員對我的終端,我可以在開始&見
[工人(主持人:user1234桌面PID:9487)]啓動在職職工
現在我的問題是,當我調用執行方法直接,它工作正常。我的意思是下面的代碼工程完美地刮擦了網站並填充了數據庫。
紅寶石1.9.2-P0> Dj_testing.new.perform
但是,當我耽誤同樣的工作它增加了作業的delayed_job表&無助:(
紅寶石-1.9.2-P0> Dj_testing.delay.new
或
紅寶石1.9.2-P0>延遲:: Job.enqueue Dj_testing.new
#<Delayed::Backend::ActiveRecord::Job id: 150, priority: 0, attempts: 0, handler:
"---!ruby/object:Delayed::PerformableMethod \nargs: ...", last_error: nil,
run_at: "2012-04-27 05:25:29", locked_at: nil, failed_at: nil, locked_by: nil,
queue: nil,created_at: "2012-04-27 05:25:29", updated_at: "2012-04-27 05:25:29">
爲什麼根據需要這份工作不工作?
你能嘗試重命名文件,以匹配類名稱?具有類Dj_testing的dj.rb有時會導致不一致。嘗試命名類DjTesting並調用文件dj_testing.rb。 – Anand 2012-04-27 06:40:54
是的,這是原因..文件名和類名應該是相同的.. – 2012-05-02 04:35:36