2012-05-29 4 views
2

지연된 작업을 사용하여 특정 시간에 작업을 비동기 적으로 수행합니다. 이것은 내 모델 클래스에서 지정됩니다. 이제 작업을 다시 예약해야 할 경우에 대비하여 작업을 다시 얻는 방법을 알아야합니다. 내 모델에서 작업을 검색하고 run_at 시간을 업데이트 할 수있는 방법이 있으면 좋을 것입니다. 지연된 업무로 어떻게해야합니까?지연된 작업 : 예약 된 작업을 검색하고 업데이트하는 방법?

답변

4

(당신이 delayed_job_active_record를 사용하는 경우 액티브 말) 당신은 단순히 지연 :: 작업 모델에서 작업 할 수 있습니다

문제는 검색하려는 작업, 그리고 당신이 알아서하는 방법입니다. 또한 유지할 delayed_job을 config (설정) 할 필요가 있습니다 등이 코드는, 당신은 잠금 장치를 확인하기 위해 반드시 안전하지 않은 필요가있다

# submit the job and remember id 
job_id_remember_for_later = Delayed::Job.enqueue(job).id 
#... 
# later 
job = Delayed::Job.find_by_id(job_id_remember_for_later) 
job.update_attributes(:run_at => new_time, :attempts => 0) 
job.save 

, : 는 상관없이 나중에 검색을 위해 당신의 작업을 관리하는 방법, 당신은 같은 것을 사용해서는 안 실패한 작업 (max_attempts 실패 후 기본적으로 삭제됨).

Delayed::Worker.destroy_failed_jobs = false 
+0

좋은 아이디어. 감사. – Andrew

+0

안녕하세요, 저는 똑같은 것을 가지고 있습니다. 왜 실패한 직업을 유지해야합니다. 스케줄을 다시 실행하기 전에 시간을 업데이트하고 삭제하기를 원하십니까? 내가 뭔가 빠진거야? – Federico