Delayed_job에서 수동으로 작업 재시도
Delayed :: Job의 자동 재시도 기능은 훌륭하지만 지금 수동으로 재 시도하고 싶은 작업이 있습니다. 작업 자체에서 호출 할 수있는 방법이 있습니까?
Delayed::Job.all[0].perform
또는 달리거나 뭔가. 몇 가지를 시도하고 문서를 정리했지만 작업을 수동으로 재 시도하는 방법을 알아낼 수 없었습니다.
작업을 수동으로 호출하려면
Delayed::Job.find(10).invoke_job # 10 is the job.id
성공적으로 실행 된 경우 작업이 제거되지 않습니다. 수동으로 제거해야합니다.
Delayed::Job.find(10).destroy
Delayed::Worker.new.run(Delayed::Job.last)
이렇게하면 작업이 완료된 후 제거됩니다.
작업을 찾고 실행하여 말한대로 정확하게 수행 할 수 있습니다.
그러나 내가 일반적으로하는 일은 작업 프로세서가 다시 선택하도록 run_at를 다시 설정하는 것입니다.
URL을 쳤을 때 지연된 모든 작업을 재설정하는 테스트 목적으로 컨트롤러에 메서드가 있습니다. 우아하지는 않지만 나를 위해 잘 작동합니다.
# For testing purposes
def reset_all_jobs
Delayed::Job.all.each do |dj|
dj.run_at = Time.now - 1.day
dj.locked_at = nil
dj.locked_by = nil
dj.attempts = 0
dj.last_error = nil
dj.save
end
head :ok
end
위의 이전 답변은 오래되었을 수 있습니다. failed_at, locked_by 및 locked_at를 nil로 설정해야합니다.
(재 시도하려는 각 작업에 대해) :
d.last_error = nil
d.run_at = Time.now
d.failed_at = nil
d.locked_at = nil
d.locked_by = nil
d.attempts = 0
d.failed_at = nil # needed in Rails 5 / delayed_job (4.1.2)
d.save!
개발 환경에서를 통해 rails console
Joe Martinez의 제안에 따라 지연된 모든 작업을 재 시도하는 좋은 방법은 다음과 같습니다.
Delayed::Job.all.each{|d| d.run_at = Time.now; d.save!}
다시 실행해야하는 지연된 작업이 실패한 경우 해당 작업 만 선택하고 실패한 재 시도를 참조하는 모든 항목을 null로 설정하면됩니다.
Delayed::Job.where("last_error is not null").each do |dj|
dj.run_at = Time.now.advance(seconds: 5)
dj.locked_at = nil
dj.locked_by = nil
dj.attempts = 0
dj.last_error = nil
dj.failed_at = nil
dj.save
end
Delayed::Job.all.each(&:invoke_job)
이니셜 라이저 파일에 넣으세요!
module Delayed
module Backend
module ActiveRecord
class Job
def retry!
self.run_at = Time.now - 1.day
self.locked_at = nil
self.locked_by = nil
self.attempts = 0
self.last_error = nil
self.failed_at = nil
self.save!
end
end
end
end
end
그런 다음 실행할 수 있습니다 Delayed::Job.find(1234).retry!
이것은 기본적으로 작업을 대기열에 다시 넣고 정상적으로 처리합니다.
참고 URL : https://stackoverflow.com/questions/3312054/manually-retry-job-in-delayed-job
'Programing' 카테고리의 다른 글
특정 태그가 overflow : hidden을 재정의하도록 허용 (0) | 2020.11.24 |
---|---|
Android : 에뮬레이터에서 웹캠을 사용하는 방법은 무엇입니까? (0) | 2020.11.24 |
전체 프로젝트 검색 및 바꾸기 (Netbeans) (0) | 2020.11.23 |
출력을 bash 함수로 파이프 (0) | 2020.11.23 |
RadioButton-사용자 정의 드로어 블을 사용하는 방법? (0) | 2020.11.23 |