Как resque удаляет задание из очереди? - PullRequest
0 голосов
/ 23 февраля 2011

Я внедрил систему очередей в режиме ожидания в моем приложении rails. Я хочу знать, как выполняется задание на восстановление, начиная с постановки в очередь и до удаления из очереди.

Традиционный рабочий процесс, наряду с методом, используемым в геме,
1. Resque поставить в очередь задание (Resque :: Job.create),
2. Job вызывает метод «execute» класса (Resque :: Job.perform) и
3. Resque удаляет задание из очереди.

Я отладил gem, чтобы выяснить метод, использованный на шаге 3, но не смог его найти. Методы Resque :: Job.destroy, Resque :: Job.dequeue не отвечают за эту задачу, как я отлаживал. Может кто-нибудь сказать мне метод, используемый для удаления задания из очереди
.
Обратите внимание, что я НЕ хочу явно удалять задание, я хочу типичный метод resque, который удаляет задание из очереди.

Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 23 февраля 2011

Resque фактически использует метод 'dequeue' для удаления задания:

  def dequeue(klass, *args)
    Job.destroy(queue_from_class(klass), klass, *args)
  end

Чтобы выбрать задание из очереди для обработки, он использует метод 'pop':

  def pop(queue)
    decode redis.lpop("queue:#{queue}")
  end 
0 голосов
/ 27 ноября 2012

, поэтому, если рабочий не работает (или мы нажимаем Ctrl + C), нет никаких следов удаленного задания.Я думаю, что работа должна выполняться только в том случае, если работа выполнена без каких-либо исключений

...