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.



125
126
127
# File 'lib/sidekiq/pausable.rb', line 125

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

Instance Method Details

#call(worker, msg, queue) ⇒ Object



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

def call(worker, msg, queue)
  if sidekiq_paused?(msg) && !(Jobs::RunHeartbeat === worker)
    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