Задержка Вакансии не находит Записи и терпит неудачу - PullRequest
0 голосов
/ 30 мая 2010

В моем приложении отложенные задания больше не запускаются автоматически на моем сервере. Раньше ..

Когда я вручную запускаю ssh и выполняю грабли: work

Я возвращаю это:

*** 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

Ответы [ 2 ]

1 голос
/ 30 мая 2010

Откройте ваши скрипты / консоль и попробуйте Photo.find (9237). Вы, вероятно, получите ту же ошибку. Это означает, что что-то / кто-то вызывает действие контроллера для несуществующей записи. Вы можете избежать этого, используя find_by_id (params [: id]), который вернет nil, если нет записи с данным id Также добавьте еще одно условие в ваше заявление if

if @photo.present? && @photo.update_attributes(params[:photo])
0 голосов
/ 30 мая 2010

Большое спасибо Тадасу Тамосаускасу за помощь, но после некоторых исследований я обнаружил, что проблема на самом деле связана с delayed_jobs. Произошло то, что, когда я развернул сервер кластера, сервер переписал мои рецепты в моем облаке для инициализации delayed_jobs. Так что отложенные работы никогда не загружались. Работа никогда не выполнялась. Обновил рецепт, перераспределил, все как надо.

...