2012-05-30 50 views
2

我有一段代碼,代碼運行的一些方法,我已經把這個方法的self.perform內,如下Resque工人沒有日誌或

class StartWorker 
@queue = :worker 

def self.perform 
puts "hello" 
    Parser.find_all_by_class_name("Parser").first.sites.each do |s| 
    site = Site.find(s.id) 
    parser = Parser.new(site) 
    parser.run 
    end 
    end 
    end 

如果我評論的高清沒有調試信息默默地失敗self.perform和此結束並運行該文件,它正確地顯示所需的結果,但是當我嘗試通過取消註釋將其作爲後臺任務它正在靜靜地進入沒有顯示任何內容的resque面板中,並且也沒有輸出命令提示符

我排隊從resque-scheduler,在我的resque_schedule.yml

start_worker: 
cron: "55 6 * * *" 
class: StartWorker 
queue: worker 
args: 
description: "This job starts all the worker jobs" 

我試圖把該DEF self.perform方法裏面一些簡單的手看跌語句來檢查控制是否傳遞方法內或沒有,但它似乎在控制甚至沒有經過self.perform方法內

還我試圖加載Rails環境和所需resque內,但沒有用 的我都拼命地跑捆EXEC耙resque:在進行任何更改

我嘗試過的工作隊列=「*」腳本上述所有在這裏顯示的軌道控制檯Resque.info,

{:working=>0, :queues=>1, :failed=>1, :environment=>"development", :servers=>["redis://localhost:6379/0"], :pending=>0, :processed=>1, :workers=>1} 

任何想法如何克服呢?

回答

4
  1. 您是否檢查過resque-web面板以查看失敗的作業是什麼?
  2. 確保您在任何更改後重新啓動工作人員。
  3. 如果你沒有看到你的日誌「你好」的任何地方(特別是登陸/ worker.log或者其它任何你登錄到),那麼該功能只是沒有發生。
  4. bundle exec rake resque:work QUEUE='*'bundle exec rake resque:work QUEUE=* ,只是櫃面你真的引用通配符。
+0

resque的Web面板不顯示任何失敗的作業,我只是看到1名工人的工作,但沒有產出或沒有日誌裏,當我試圖「捆綁高管耙resque:工作隊列= *」這是拋出錯誤,如**耙子中止了! 未定義的方法'map'爲零:NilClass ** –

+1

對!所以你的工人不會真的開始。你需要找到它試圖.map的零對象。 – TomDunning

+0

是的,但如何得到這個錯誤來自哪裏?當使用不帶self.perform方法或不具有StartWorker類運行很好產生所需的輸出 –