只有在合适的条件下才能执行工作

问题描述 投票:0回答:1

我正在使用sidekiq适配器的活动作业,我只想在满足某些条件时执行作业,例如。我追加到队列但我不想从队列unles执行任何项目设置特定的redis标志。我怎么能做到这一点?如果在触发器之前我将检查标志是否已设置并抛出异常它将起作用,我想,但它似乎并不优雅。

ruby-on-rails ruby sidekiq rails-activejob
1个回答
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这样的事件机器。必要时调用工作。否则,你在浪费资源。

© www.soinside.com 2019 - 2024. All rights reserved.