我们遇到与此Sidekiq schedule same worker to queue when done
类似的问题问题的症结在于,如果将多个参数传递给perform_in
,它不会为以后安排它们,而是像往常一样处理它们。
这可以按预期工作,但没有用,因为没有参数 被传递到新工作
def perform(id, mode)
begin
Some::Process.remediate(App.find(id), mode)
rescue CustomErrors::MyError => e
# This will schedule a job, but without arguments :(
self.class.perform_in(2.hours)
end
end
这很有用,但不能按预期工作 工作完成,没有重新安排
def perform(id, mode)
begin
Some::Process.remediate(App.find(id), mode)
rescue CustomErrors::MyError => e
# This does not schedule a job
self.class.perform_in(2.hours, id, mode)
end
end
用于:
Sidekiq 3.5.1
Rails 4.2.4
ruby 2.3.1p112
dev environment
非常感谢任何帮助
更新
使用绑定
运行代码时binding.pry
self.class.perform_in(2.hours, 2, 12345)
它确实安排了一份工作,但仅限于第一次。当谈到它时,第二次工作正在运行的某些原因。