2013-09-08 4 views
2

내 레일 3 앱 알림 이메일을 보내는 관리 Resque (그리고 레디 스)를 사용하고 있습니다.Resque 'processing'대기열을 지울 필요가 있습니까?

알림이 전송해야 할 경우 내가 확인하는 작업을 30 분마다 대기열에 Whenever의 crontab 보석을 사용하고 있습니다.

은 내가 '처리'작업이 성공적으로 완료 할 때마다이 있다는 resque-web 인터페이스에서 확인할 수 있습니다. 나가 redis 및 또한 나의 서버를 재출발하더라도,이 "끝난"대기열은 이제까지 맑게하지 않는다 보인다. 이것은 그 자체로는 나를 괴롭히지는 않지만, 어떻게 든 그것을 지워 버리면 안된다고 확신하고 싶습니다. 이 모든 완성 된 일자리가 단지 레디 스에 앉아서 메모리를 먹고 있습니까? Redis는 특정 길이에 도달하면 가장 오래된 위치부터 자동으로 지울 것입니까?

감사 레디 스에서

+0

중복 된 http://stackoverflow.com/questions/5552743/problem-in-resque-job-not-getting-removed-from-queue-when-finished-processing – techvineet

+2

어, 아니에요. – Tallboy

답변

1

처리 된 키는 총 Resque에 의해 처리 된 얼마나 많은 작업에 대한 정보를 포함, 다른 노동자.

작업자가 작업을 처리 완료되면

done_workingprocessed!를 호출하는 근로자에 ​​호출됩니다

def processed! 
    Stat << "processed" 
    Stat << "processed:#{self}" 
end 

Stat이 Resque의 인스턴스에 대한 통계를 추적 할 수 Resque의 모듈입니다. 그것은 단지 완료는, 같은 것들의 단지 정수 카운트 모든 작업의 ​​기록을 저장하지 않습니다, 정수를 유지 : 많은 작업이 특정 근로자에 ​​실패했습니다 어떻게

  • 얼마나 많은 작업이 전체
  • 실패를
  • 얼마나 많은 작업은 단순히 increm 모듈의 소스, <<를 볼 때
  • 특정 직원에 의해 처리 된 얼마나 많은 작업

당신이 볼 수있는 총 처리 된 정수 :

def <<(stat) 
    incr stat 
end 

플러시에 대해 걱정할 필요가 없습니다. 그것은 당신이 가지고있는 노동자의 양에 비례하는 아주 작은 데이터입니다. Resque는 실패한 일자리를 계속 유지하지만 좋은 일이며 아마도 내릴 일이 아닙니다.

+0

기본적으로 Resque는 Redis에서 완료된 작업을 삭제해야합니까? 나는 그것이 완전 해지면 수동으로 DB를 플러시해야하는지 확신 할 수 없도록 redistogo를 사용하고 있습니다. 내가 아는 바로는 Resque는 실패한 작업으로 막히게됩니다. 참된? –