2014-07-26 41 views
1

我使用delayed_job來計劃發佈到Facebook的開放圖的任務,以規避在Facebook之後立即爲Facebook刮板準備好內容的問題行動完成。 (刮板拿錯「OG:類型」的內容,因爲它沒有被高速存儲在Facebook上側)Rails delayed_job - 延遲作業從表中刪除,處於狀態運行狀態,但從未完成/執行

至於我可以告訴大家,我對這個工作流程設置正確的碎片。但是,當作業排隊時,我可以從服務器日誌中看到它已插入到delayed_jobs表中。當我在控制檯查詢delayed_job時,它不存在(實際上不存在,它們總是被刪除)。當檢查delayed_job.log我能看到的作業記錄爲RUNNING狀態之後再也沒有報告任何進一步的和通過檢查Facebook的工作似乎並沒有被執行。之前,我收到來自Facebook的錯誤消息,指出操作失敗,將作業設置爲FAILED。既然情況不是這樣,我相信行動本身已經得到解決。

在服務器日誌報告也飄忽不定,因爲有時我能看到的delayed_job的日誌被刪除,但有時它是在沒有在服務器日誌痕跡刪除。

我想不通的地方來解決此或者如果正在執行的行動,因爲它應該是爲了覈實。下面的相關代碼,請詢問任何額外的幫助。

當方法是越來越實錯誤重現方法來修復錯誤的Facebook

Job JobScheduler::PublishFBListCreation (id=15) RUNNING 

從呼叫控制器

Job JobScheduler::FacebookListCreation (id=2) FAILED (7 prior attempts) with NoMethodError: undefined method `list_url' 

delayed_job.log輸出delayed_job.log輸出

if current_user.facebook_id && current_user.facebook_access_token Delayed::Job.enqueue JobScheduler::PublishFBListCreation.new(list_url(@list), current_user.facebook_access_token), 0, 1.minutes.from_now end 

job_scheduler.rb

class PublishFBListCreation < Struct.new(:full_list_url, :facebook_access_token) 
    def perform 
    @app = FbGraph::Application.new(ENV['FACEBOOK_APP_ID'], :secret => ENV['FACEBOOK_APP_SECRET']) 
    @fb_user = FbGraph::User.me(facebook_access_token) 

    action = @fb_user.og_action!(
      @app.og_action(:create), :list => full_list_url) 
    end 
    end 

回答

0

我沒有得到你的實際問題,但你的錯誤「未定義的方法`list_url」」,是因爲它屬於您的調用類之一,延遲工作唐不知道。你能解決這個問題是這樣的:

if current_user.facebook_id && current_user.facebook_access_token 
    url = list_url(@list) 
    access_token = current_user.facebook_access_token 
    Delayed::Job.enqueue JobScheduler::PublishFBListCreation.new(url, access_token), 0, 1.minutes.from_now 
end 
+0

我不認爲應該的問題。這應該在通話時進行評估,並作爲評估值(即完整的URL)傳遞給排隊調用。 在較短的形式實際的問題是,工作得到排隊,去運行的狀態,但不實際工作。 – justinraczak

+0

你在哪裏得到這個list_url錯誤在延遲作業錯誤列或你的日誌? –

+0

這是一個與在delayed_job.log文件 – justinraczak

相關問題