Как изменить run_at для запуска delayed_job - PullRequest
0 голосов
/ 15 февраля 2019

В какой-то момент у меня есть задание, которое нужно запустить, но оно помещается в очередь к рабочим

пример -

run_at = (Date.today + 2.days) + 4.hours
Delayed::Job.enqueue(ReleaseSecurityMoneyJob.new(transaction_id), run_at: run_at)

Через 36 часов я хочу продлить это run_at время для следующего 48.hours

Как мне этого добиться.?

1 Ответ

0 голосов
/ 21 мая 2019

Один из вариантов - использовать gem 'delayed_job_recurring' и настроить периодическое выполнение задания.

  class ReleaseSecurityMoneyJob < Struct.new(:transaction_id)
      include Delayed::RecurringJob
      run_every 4.days
      timezone 'Central Time (US & Canada)'
      queue 'slow-jobs'
      def perform
        ..
      end
  end

. Затем создайте это задание, как и вы, и оно будет исполняться блаженно каждые 4 дня.

Delayed::Job.enqueue(ReleaseSecurityMoneyJob.new(transaction_id))

Тогда в какой-то момент вы хотите закончить, просто позвоните

ReleaseSecurityMoneyJob.unschedule

Однако это приведет к отмене планирования всех заданий этого класса.Я думаю, что есть несколько вариантов, чтобы выбрать конкретную работу в зависимости от транзакции.Тебе придется немного поэкспериментировать.

...