Module: Sidekiq::ConcurrencySafety

Defined in:
lib/sidekiq/concurrency_safety.rb,
lib/sidekiq/concurrency_safety/version.rb

Defined Under Namespace

Classes: AlreadyRunningError

Constant Summary collapse

VERSION =
"0.1.2"

Instance Method Summary collapse

Instance Method Details

#perform(*args) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/sidekiq/concurrency_safety.rb', line 7

def perform(*args)
  @args = args

  redis_key = key_generator

  redis_pool.with do |r|
    raise AlreadyRunningError unless r.set(redis_key, 1, ex: final_ttl, nx: true)

    begin
      super
    ensure
      r.del(redis_key)
    end
  end
end