Я использую collectidea для рельсов 2.3.8. Я создаю массив замедленных заданий для выполнить некоторые задачи, через некоторое время я хочу уничтожить все запущенные задания с задержкой. Если кто-то знает, как это сделать, пожалуйста, помогите мне.
Уничтожение всей отложенной работы в рельсах
Ответ 1
Вам нужно было прочитать README для страницы delayed_job GitHub, чтобы решить эту проблему:
Вы можете вызвать задания rake: clear, чтобы удалить все задания в очереди.
Ответ 2
В дополнение к задаче rake задания DelayedJob - это обычная модель ActiveRecord, поэтому, если вы находитесь в коде Ruby, вы можете делать с ними что угодно:
Delayed::Job.destroy_all
Delayed::Job.delete_all
Delayed::Job.find(4).destroy
# etc.
Ответ 3
Похоже, у вас есть родительский процесс, который хочет тайм-аута, если его набор заданий не завершится в течение определенного времени. Вместо того, чтобы зависеть от ссылок на сами задания, установите флаг на модели, который указывает, что процесс отказался. Задания могут проверять этот флаг и короткое замыкание, если они больше не нужны. (Ваш класс Job также должен переносить содержимое своего метода #perform в таймаут.)
Это почти всегда плохая идея, чтобы попытаться найти ссылки на объекты DJ, как вы, кажется, предлагаете.