Sidekiq为后来的某个时间点安排工人

时间:2016-11-02 21:07:46

标签: ruby-on-rails ruby ruby-on-rails-4 sidekiq

我们遇到与此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)

它确实安排了一份工作,但仅限于第一次。当谈到它时,第二次工作正在运行的某些原因。

0 个答案:

没有答案