2012-03-05 2 views
1

특정 시간 내에 처리되지 않으면 시간 초과 작업을 재개 할 수있는 기능을 구현해야합니다.resque 작업에 대한 시간 초과 설정 방법

그래서 작업이 생성되었지만 대기열이 너무 길거나 작업을 수행 할 수있는 직원이 충분하지 않아 한 시간 내에 처리 할 수 ​​없다고 가정합니다.

나는 그런 일에 삭제 될 일을하지 않았다 ... 그 일을하는 가장 좋은 방법은 무엇인가? 어쩌면 내가 감독하거나 제 3 자 보석 인 구성 매개 변수가 있을까요?

감사

+0

https://rubygems.org/gems/resque-timeout은 작업 시간 초과 예정인 보석입니다. 확실하지 않은 경우 삭제 또는 – ScottJShea

+0

이미 확인 ... 그것은 긴 실행중인 작업을 죽일. 그래서 내가 뭘 찾고 있었는지 :( – Matthias

답변

1

기본적으로 Resque에서이 작업을 수행 할 수있는 방법이 있는지 모르겠어요,하지만 자신을 할 어렵지 않을 것입니다. ,

def perform(id, queued_at) 
    return false unless Time.parse(queued_at) >= 1.hour.ago 

    ... 
end 

그리고 작업을 대기열하기 위해 수행합니다 : 당신의 일에

은 같은 것을 할 Resque.enqueue (MyJobClass, object.id, DateTime.now). 첫 번째 줄은 작업을 자동으로 덤프하고 한 시간 이상 대기 한 경우 수행되지 않도록합니다.

+0

고마워. 우리는 그 일을 할거야. 난 그냥 resque에서 queued_at 필드에 액세스하는 쉬운 방법입니다 궁금한가요? – Matthias

+0

나는 꽤 확신 해요 Resque doesn ' 심지어 당신이 그것을 추적하지 않는 한, queued_at를 추적하는 것을 괴롭 히기 때문에, 그것을 접근 할 방법이 없습니다. – Veraticus

+0

고마워요. – Matthias