2010-05-29 30 views
0

在我的應用程序中,延遲作業不再在我的服務器上自動運行。它用於..延遲作業未找到記錄並失敗

當我手動SSH方式,並進行耙作業:工作

我回到這一點:

*** Starting job worker host:ip-(censored) pid:21458 
* [Worker(host:ip-(censored) pid:21458)] acquired lock on PhotoJob 
* [JOB] host:ip-(censored) pid:21458 failed with ActiveRecord::RecordNotFound: Couldn't find Photo with ID=9237 - 4 failed attempts 

這大致返回20倍過什麼,我認爲是幾項工作。然後我得到了其中的一些:

* [Worker(host:ip-(censored) pid:21458)] failed to acquire exclusive lock for PhotoJob 

然後終於下列操作之一:

12 jobs processed at 73.6807 j/s, 12 failed ... 

任何想法,我應該是什麼思索?非常感謝!

編輯:

這裏是光控制器,要求延遲工作:

def update 
    @gallery = @organization.media.find_by_media_id(params[:gallery_id]).media 
    @photo = @gallery.photos.find(params[:id]) 

    if @photo.update_attributes(params[:photo]) 
     @photo.update_attribute(:processing, true) 
     logger.info "HERE IS PROCESSING #{@photo.processing}" 
     Delayed::Job.enqueue PhotoJob.new(@photo.id) 
     respond_to do |format| 
     format.html do 
      if params[:captions_screen] == 'true' 
       logger.info "WE ARE GOING TO DO NOTHING AT ALL" 
       render :text => '' 
      else 
       redirect_to organization_media_url(@organization) 
      end 
     end 
     format.js { redirect_to organization_media_url(@organization) } 
     end 
    else 
     render :action => 'edit' 
    end 
end 

回答

0

很多很多的感謝增加一個條件塔達斯Tamosauskas上幫助了,但經過一番研究,我發現,真正的問題在於delayed_jobs。發生了什麼事情時,我部署到集羣服務器,服務器覆蓋我的ey-cloud上的食譜delayed_jobs初始化。所以延遲的工作永遠不會啓動。工作從未跑過。更新了配方,重新部署了,一切都很棒。

1

打開腳本/控制檯,並嘗試Photo.find(9237)。你可能會得到同樣的錯誤。這意味着某人/某人正在調用未處理記錄的控制器操作。你可以通過使用find_by_id(params [:id])來避免這種情況,如果沒有給定id的記錄,它將返回nil。另外,在你的if語句

if @photo.present? && @photo.update_attributes(params[:photo])