Class: Sidekiq::Pausable

Inherits:
Object
  • Object
show all
Defined in:
lib/sidekiq/pausable.rb

Overview

server middleware that will reschedule work whenever Sidekiq is paused

Instance Method Summary collapse

Constructor Details

#initialize(delay = 5.seconds) ⇒ Pausable

Returns a new instance of Pausable.



123
124
125
# File 'lib/sidekiq/pausable.rb', line 123

def initialize(delay = 5.seconds)
  @delay = delay
end

Instance Method Details

#call(worker, msg, queue) ⇒ Object



127
128
129
130
131
132
133
134
135
136
137
# File 'lib/sidekiq/pausable.rb', line 127

def call(worker, msg, queue)
  if sidekiq_paused?(msg)
    worker.class.perform_in(@delay, *msg["args"])
  else
    start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
    result = yield
    duration = Process.clock_gettime(Process::CLOCK_MONOTONIC) - start
    DiscourseEvent.trigger(:sidekiq_job_ran, worker, msg, queue, duration)
    result
  end
end