更新计划作业的参数

时间:2015-11-22 14:08:13

标签: ruby-on-rails sidekiq

我安排了一份工作

Worker.perform_at(time, args)

我可以获取预定的工作

job = Sidekiq::ScheduledSet.new.find_job(jid)
job.args # this is the args I passed above

我需要更新调用时传递给worker的args,即更新job.args。我该怎么做?

这不起作用:

job.args = new_args
Sidekiq::ScheduledSet.new.to_a[0] = job

1 个答案:

答案 0 :(得分:2)

更新任务不是实现取消作业的方式,而是用新的args创建新的:

job = Sidekiq::ScheduledSet.new.find_job(jid)
## time = job.time // Or just set time needed.
Sidekiq::Status.cancel jid

Worker.perform_at(time, new_args) 

它还可以让您更轻松地调试和记录作业,因为当您动态编辑/更新它们时可能会导致很难识别的错误。