Как установить тайм-аут для повторных заданий - PullRequest
1 голос
/ 05 марта 2012

Мне нужно реализовать функцию, которая позволяет восстанавливать время ожидания заданий, если они не были обработаны в течение определенного времени.

Итак, допустим, что задание создано, но не может быть обработано в течение одного часа, потому что очередь слишком длинная и / или не хватает рабочих, отрабатывающих их.

Я не хочу, чтобы работа была удалена в таком случае ... какой лучший способ сделать это? Может быть, есть параметр конфигурации, который я наблюдаю, или сторонний гем?

Спасибо

1 Ответ

1 голос
/ 05 марта 2012

Я не знаю, есть ли способ сделать это в Resque по умолчанию, но это не составит труда сделать самостоятельно.

В вашей работе сделайте что-то вроде этого:

def perform(id, queued_at)
  return false unless Time.parse(queued_at) >= 1.hour.ago

  ...
end

А чтобы поставить в очередь задания, выполните: Resque.enqueue (MyJobClass, object.id, DateTime.now). Первая строка автоматически сбросит задание и предотвратит его выполнение, если оно было поставлено в очередь более часа назад.

...