我有一个问题,关于如何只运行一次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作业。如果你能做到这一点,就根本不需要信号量。
请回答。