Я пытаюсь выяснить, могу ли я использовать delayed_job
. Мне понадобилась бы возможность добавлять задания в очередь в методе delayed_job
perform
. Это возможно?Может delayed_jobs создать delayed_jobs?
3
A
ответ
2
По моему испытанию, они могут:
Machine
модель:
class Machine < ActiveRecord::Base
def perform
Delayed::Job.enqueue Secondary.create!
end
end
модель Secondary
:
class Secondary < ActiveRecord::Base
def perform
logger.info("Inside secondary's perform method (WIN)")
Proof.create!
end
end
из консоли:
Задержки :: Работа .enqueue Mach ine.create!
В результате создается экземпляр Proof
и журналы «Внутренние вторичные ...».
-1
Мой простой тест вызова в методе, вызываемой send_later
send_later
указывает, что NO, он не будет работать.
+0
Возможно, это просто 'send_later', что не позволяет этого. Я тестировал скрипт/консоль. –
Моя отложенная работа также отлично работает при старте другой отложенной работы в рамках ее работы. –
Да, они абсолютно могут. Есть некоторые обстоятельства, когда полезно «цепочки» заданий, подобных этому, но большую часть времени вы можете просто иметь одно задание, которое переводит состояние модели по мере того, как это происходит, чтобы задание можно было перезапустить в текущей точке своего если он терпит неудачу. – betamatt