(с использованием delayed_job colleideaa)
У меня есть задание, которое очищает ключевое слово, но я хочу, чтобы задание уничтожило само себя, если с тех пор ключевое слово было удалено с момента его постановки в очередь (то есть пользователь удаляет одно изего ключевые слова).
class ScrapingJob < Struct.new(:keyword_id)
def perform
keyword = Keyword.find(keyword_id)
data = keyword.scrape
keyword.details.create!(:text => data[:text])
end
end
Я пытался поместить его в DJ's перед подключением, переместив поиск ключевых слов в что-то вроде:
def before(job)
# If keyword doesn't exist, destroy job
begin
@keyword = Keyword.find(keyword_id)
rescue 'RecordNotFound'
self.destroy
end
end
Работа не удалась, поэтому DJ продолжаетпытаясь выполнить это задание до тех пор, пока оно не достигнет указанной выше границы повторной попытки.
Вот ошибка:
Keyword Load (0.4ms) SELECT "keywords".* FROM "keywords"
WHERE ("keywords"."id" = 292929) LIMIT 1
AREL (1.1ms) UPDATE "delayed_jobs"
SET "last_error" = '{Couldn''t find Keyword with ID=292929
...
...
Я хочу, чтобы DJ просто уничтожил задание, как только обнаружит, что ключевое слово не 'не существует, минуя всю систему повторных попыток.