Sidekiq只运行一次

时间:2015-06-19 11:00:28

标签: ruby-on-rails ruby sidekiq

我有一个问题,关于如何只运行一次sidekiq作业。刚刚开始使用rails web-app。我尝试过的一件事是在config / initializer.rb中初始化redis信号量,然后在作业中使用它,但它有点不起作用。以下是我试图开始工作的代码:

配置/ initializer.rb

SEMAPHORE = Redis::Semaphore.new(:semaphore_name, :host => "localhost")

queue_worker.rb

class QueueWorker
  include Sidekiq::Worker

  def perform
    logger.info 'Start polling'
    unless SEMAPHORE.locked?
      logger.info 'Im here only once'
      SEMAPHORE.lock
    end
  end
end

root_controller_action

 QueueWorker.perform_async

另一个变体我不知道是否可以在初始化程序中运行sidekiq作业。如果你能做到这一点,就根本不需要信号量。

请回答。

0 个答案:

没有答案