2010-05-29 85 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])