2017-12-19 31 views
2

작년 한 해 동안 내 일의 과정에 상당한 변화를주었습니다. 코너의 경우 몇 달 전부터 내 이전 작업을 참조 Old Sidekiq 작업이 영원히 재 시도합니다. 사이드 키잉 UI에 대한 가시성이 없음

를 각각의 모델에 after_commit 대신 after_create에서 트리거뿐만 아니라 논리를 정리하고 커버 같은 것들 재 시도해서 또 다시 내 Heroku가 루비에 내 Papertrail 로그에 레일 애플 리케이션. 새로운 것들이 좋으며 나의 변화가 어떤 이슈를 고쳤다 고 나는 믿는다. 문제는 이전 작업을 모두 중지하고 UI가 Sidekiq인데 왜 표시되지 않는 이유입니까? Sidekiq UI는 완료된 작업의 수를 표시하지만 0은 실패, 사용 불능, 사용 중 또는 대기열에 포함됩니다. 그것은 0을 말한다. 그러나 나는 로그가 멀리 휘젓는 것을 본다.

작업 ID는 기록하지만 그 결과는 you cannot kill a specific job입니다. 나는 서버를 여러 번 다시 시작했습니다. 매일 그들은 다시 시도합니다.

최근의 모든 작업이 정상적으로 작동합니다. 지난 달 또는 그 이후의 기간은 반복되지 않습니다. after_create 트리거 작업이있는 5000 개의 개체 중 1-60 개만 다시 시도하고 있습니다. 다른 사람은 통과하고 당신이 레일 콘솔에서이 작업을 수행 할 수있는 jid 년대를 알고있는 경우

답변

1

괜찮 : 그것은 retryset에 있다면

queue = Sidekiq::Queue.new("my_queue") 
queue.each do |job| 
    job.delete if job.jid == 'abcdef1234567890' 
end 

당신이 할 수 있습니다

query = Sidekiq::RetrySet.new 
query.each do |job| 
    job.delete if job.jid == 'abcdef1234567890' 
end 

하는 경우 작업이 기내에 있기 때문에 삭제할 수 없습니다. 몇 분 동안 작업자 프로세스 (예 : 종료)를 중지 한 다음 위를 실행하십시오.

+0

매우 단순하지만 두 옵션 모두 루프의 결과가 0입니다. 나는 삭제 대신에 단지를 인쇄하고 있었다. 모든 '새'작업이 로그와 sidekiq 대기열에 표시되기 때문에 동일한 sidekiq 인스턴스를 알지만 이러한 '이전'작업은 로그에 표시됩니다. sidekiq 대기열이 아닙니다. – MingMan

+0

jid 다시 시도하면 변경됩니다. 조회를 위해 할 수있는 또 다른 자격 요건이 있습니까? 어쩌면 당신이 말할 수있는'job.args'의 어떤 부분이 더 오래된 일 때문일 수 있습니까? – Anthony

+0

대기열에 항목이 없습니다. 그것은 delete 라인 (또는 내 경우에는 puts 라인)을 결코 치지 않습니다. 내가 생각할 수있는 유일한 점은 큐의 이름이 변경된 점이 있지만 redis 인스턴스를보고 다른 큐 이름 (예 : 인증서)이 보이지 않는다는 것입니다. – MingMan