2012-12-10 4 views
0

잘못된 코드에서 잡힌 resque 작업이 있으며 반복적으로 실패한 후에 무한히 요청됩니다. 어떻게 든 수동으로 작업을 제거하고 싶습니다만, 작업의 이름이 redis 네임 스페이스에 있는지 모르겠습니다. 실제 예외를 잡기 때문에 '실패'에 있지 않습니다. 예외적으로 Resque.enqueue_in()을 사용하여 resque 큐에 다시 작업을 추가합니다. 어떻게 작업의 이름이 redis에 있는지 알아 내서 키/작업을 삭제할 수 있습니까?지연된 resque 작업 찾기 및 제거

답변

2
당신은 레디 스에서 메시지를 제거하려면 기본적으로 큐 다음이

require "rubygems" 
require "redis" 
require 'redis/namespace' 
redis = Redis.new 
namespace ||= :resque 

@redis = Redis::Namespace.new(namespace, :redis => redis) 
## If you dont know how does the job payload look like then find inside the list 
## normally the payload look like this 
## {'class' => 'ProcessCSV' , args => ['1'] }.to_json.inpsect 
list_job_payloads = @redis.lrange "queue:[my queue name]",0,-1 

## then finally remove from the list 
@redis.lrem "queue:[my_queue_name]",0,value 

을 시도 할 수있는 레디 스 list는하지만 더 나은 방법이 같은 resque를 통해 작업을 삭제하는 것 같아요

Resque 조사 이

(가) 아래 그럼 당신은 지불을 삭제할 수 있습니다 resque

{ 'class' => 'ProcessCSV', 'args' => ['1'] } 

하여 레디 스 목록에 작업 페이로드 푸시는 것을 고려

Resque::Job.destroy(queue, 'ProcessCSV', '1') 

를 사용하여 부하 또한 here

통해보다 상세히 설명
관련 문제