2012-12-10 1 views
0

У меня есть работа по поиску, которая попала в какой-то плохой код и бесконечно получает запрос после неудачного повторения. Я хотел бы как-то удалить задание вручную, но я не уверен, что имя задания находится в пространстве имен redis. Это не «неудачно», потому что я уловил фактическое исключение. В исключении я добавляю задание обратно в очередь resque, используя Resque.enqueue_in(). Как определить, что имя задания указано в redis, чтобы я мог удалить ключ/работу из когда-либо?Локализация и удаление отложенного задания resque

ответ

2

Resque опрашивать Redis list, что по существу очередь, если вы хотите удалить сообщение из Redis, то вы можете попробовать этот

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 

Но я думаю более лучше было бы удалить задание через Resque как это

Учитывая, что ниже задания полезной нагрузки толчок к списку REDIS по Resque

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

Затем вы можете удалить плату нагрузка с использованием

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

Он также более подробно описать более here

 Смежные вопросы

  • Нет связанных вопросов^_^