我安排了一份工作
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
答案 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)
它还可以让您更轻松地调试和记录作业,因为当您动态编辑/更新它们时可能会导致很难识别的错误。