2011-11-05 26 views
5

我正在使用delayed_job,並且能夠使用rake作業運行作業:工作但使用守護程序版本,儘管我在進程列表中看到它,但它沒有執行任何操作。Delayed_job守護進程沒有在開發中運行嗎?

我使用:

  • 軌(3.0.9)
  • 的delayed_job(2.1.4)
  • 守護程序(1.0.10)

我跑的delayed_job使用:

unix>RAILS_ENV=development script/delayed_job start 
+0

什麼是'RAILS_ENV =發展腳本/ delayed_job的status'的結果呢? – Ernest

+0

你是否試圖在沒有守護進程的情況下運行它? – Ernest

+0

Gemfile.lock表明守護進程是必需的依賴項,但我將刪除顯式使用並嘗試它。我這樣做的原因是嘗試並強制Daemonize使用特定版本(因爲我在守護進程中使用了1.0.10,所以圍繞使用1.0.10的守護進程提供了很多StackOverflow建議),因爲我在系統上有守護進程1.1.4。 – Aditya

回答

3

要回答你的問題,我們可能需要更多形成。

作業已添加到數據庫?工作中是否有錯誤?

RAILS_ENV=development script/delayed_job status結果如我剛纔提到的那樣?

二,您是否遇到過維基頁面最常見的問題?

https://github.com/collectiveidea/delayed_job/wiki/Common-problems

+0

作業被添加到數據庫。它們不是由守護進程處理,而是由耙工作處理:工作。我將檢查延遲的作業狀態消息,但是我看到它正在運行(當我啓動兩次時,它表示進程已經運行)+ delayed_job.log中的pid與ruby delayed_job進程的pid匹配。 – Aditya

+0

Status returns'delayed_job:running [pid 1473]' – Aditya

3

這可能是加載自定義作業類文件的一個問題。要測試一下,試試這個:

  • 進入導軌控制檯rails console --sandbox
  • 確保你在表job = Delayed::Job.first有工作。
  • 嘗試YAML.load(job.handler)。如果看到如下所示的錯誤:ArgumentError: undefined class/module MyCustomClass,這可能是加載自定義作業時出現的問題
  • 仍然在rails控制檯中運行require 'My_Custom_Class。然後再次運行YAML.load(job.handler)命令。如果這返回適當的對象,那肯定是一個類加載問題。

要解決該問題,請創建文件config/initializers/custom.rb並在其中放入require 'My_Custom_Class'

然後,您應該能夠運行rake jobs::workoff和得到的東西看起來是這樣的:

[Worker(host:my.host pid:5085)] Starting job worker 
[Worker(host:my.host pid:5085)] MyCustomJob completed after 0.0774 
[Worker(host:my.host pid:5085)] 1 jobs processed at 9.1935 j/s, 0 failed ... 
[Worker(host:my.host pid:5085)] No more jobs available. Exiting 
相關問題