延迟作业:如何检索和更新计划作业



我正在使用延迟作业在特定时间异步执行作业。这是在我的模型类中指定的。现在我需要弄清楚如何检索作业,以防我需要重新安排作业。如果我可以在我的模型上有一个方法来检索作业并更新run_at时间,那就太好了。我该如何对延迟作业执行此操作?

你可以简单地处理 Delayed::Job 模型(如果你使用 delayed_job_active_record,比如 activerecord)

问题是你想检索什么工作,以及你如何处理它。无论您如何管理作业以供以后检索,都应使用以下内容:

# submit the job and remember id
job_id_remember_for_later = Delayed::Job.enqueue(job).id
#...
# later
job = Delayed::Job.find_by_id(job_id_remember_for_later)
job.update_attributes(:run_at => new_time, :attempts => 0)
job.save

此代码肯定不安全,您需要检查锁定等。另请注意,您需要配置delayed_job以保留失败的作业(默认情况下在max_attempts失败后删除)。

Delayed::Worker.destroy_failed_jobs = false

相关内容

  • 没有找到相关文章