仅在适当条件下执行工作

时间:2019-02-21 16:04:02

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

我正在使用带有sidekiq适配器的活动作业,并且仅在满足某些条件时才想执行作业,例如。我追加到队列,但是我不想从队列开始执行任何项目,除非设置了特定的redis标志。我该怎么做?我想,如果在触发器之前,我将检查标志是否已设置并抛出异常,它将正常工作,但这看起来并不优雅。

1 个答案:

答案 0 :(得分:0)

class SendNotificationsJob
  include Sidekiq::Worker
  queue_as :default

  def perform(order)
    order_status = $redis_server.get("#{order.id}:status")
    unless 'done' == order_status
      SendNotificationsJob.set(wait: 10.minutes).perform_later(order)
      return # end this job. new job will check in 10min later
    end
    # fill here
  end
end

这可以在没有retrying issues的情况下使用。但是,我的建议是使用aasm之类的事件机。必要时调用作业。否则会浪费资源。