Подтвердить что ты не робот

Уничтожение всей отложенной работы в рельсах

Я использую collectidea для рельсов 2.3.8. Я создаю массив замедленных заданий для   выполнить некоторые задачи, через некоторое время я хочу уничтожить все запущенные задания с задержкой.   Если кто-то знает, как это сделать, пожалуйста, помогите мне.

4b9b3361

Ответ 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, как вы, кажется, предлагаете.