在某个时候,我有一项必须运行的工作,但它被排在工人的队列中
示例-
$ pr -2ats, file
4194369,4194376
4194383,4194377
4194389,4194394
4194399,4194395
4194402,4194403
4194407
36小时后,我想将此run_at = (Date.today + 2.days) + 4.hours
Delayed::Job.enqueue(ReleaseSecurityMoneyJob.new(transaction_id), run_at: run_at)
时间延长到下一个run_at
我该如何实现?
答案 0 :(得分:0)
一种选择是使用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
但是,这将取消安排该班级的所有工作。我认为有一些选项可以基于transaction_id选择特定的工作。您将不得不尝试一下。