Module: Sidekiq::Batch::Callback

Defined in:
lib/sidekiq/batch/callback.rb

Defined Under Namespace

Classes: Worker

Class Method Summary collapse

Class Method Details

.call_if_needed(event, bid) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/sidekiq/batch/callback.rb', line 16

def call_if_needed(event, bid)
  needed = Sidekiq.redis do |r|
    r.multi do
      r.hget("BID-#{bid}", event)
      r.hset("BID-#{bid}", event, true)
    end
  end
  return if 'true' == needed[0]
  callback, opts, queue = Sidekiq.redis do |r|
    r.hmget("BID-#{bid}",
            "callback_#{event}", "callback_#{event}_opts",
            'callback_queue')
  end
  return unless callback
  opts    = JSON.parse(opts) if opts
  opts  ||= {}
  queue ||= 'default'
  Sidekiq::Client.push('class' => Sidekiq::Batch::Callback::Worker,
                       'args' => [callback, event, opts, bid],
                       'queue' => queue)
ensure
  Sidekiq::Batch.cleanup_redis(bid) if event == :success
end