从 perform 中重新安排 sidekiq 作业

reschedule a sidekiq job from within perform

有没有办法在 Sidekiq worker 中检查 perform 内部的条件,并在不同的时间重新安排作业(并停止执行作业)?

def perform

 if is_it_summer_yet?
   Bear.wake_em_up
 else
   # reschedule to perform in a few hours
 end

end

这是一个简单的例子,但在我的用例中有很多针对该条件的计算和网络调用,所以我无法在外部完成

def perform
  if is_it_summer_yet?
    Bear.wake_em_up
  else
    self.class.perform_in(1.hour)
  end
end

小心!记住 returnself.class.perform_in()

之后

我在生产环境中遇到了严重的问题。