运行 在特定时间延迟作业
Run Delayed Job at a specific time
我有一个电子邮件发送任务,我想 运行 在用户指定的时间发送。我有一个日期时间列 deliver_at,我应该在该列发送电子邮件。我正在使用延迟作业来执行后台作业。
延迟作业允许我指定时差而不是安排作业的确切时间。
GiftCardMailerJob.set(wait: delay_by.minutes.from_now).perform_later(go)
有没有办法直接给deliver_at时间,然后在那个时间做延迟作业运行?
如果不是时差怎么算?
((deliver_at - Time.now) / 60).minutes.from_now
正确的做法应该是?
您可以在delayed_jobs
中使用enqueue
方法
Delayed::Job.enqueue(GiftCardMailerJob.new, :run_at => deliver_at)
如果您在数据库中看到 delayed_jobs
table,则 run_at
字段的类型为 datetime
并且您可以为任何 datetime
值它。
我有一个电子邮件发送任务,我想 运行 在用户指定的时间发送。我有一个日期时间列 deliver_at,我应该在该列发送电子邮件。我正在使用延迟作业来执行后台作业。
延迟作业允许我指定时差而不是安排作业的确切时间。
GiftCardMailerJob.set(wait: delay_by.minutes.from_now).perform_later(go)
有没有办法直接给deliver_at时间,然后在那个时间做延迟作业运行?
如果不是时差怎么算?
((deliver_at - Time.now) / 60).minutes.from_now
正确的做法应该是?
您可以在delayed_jobs
enqueue
方法
Delayed::Job.enqueue(GiftCardMailerJob.new, :run_at => deliver_at)
如果您在数据库中看到 delayed_jobs
table,则 run_at
字段的类型为 datetime
并且您可以为任何 datetime
值它。