class Sidekiq::Metrics::Middleware

Public Instance Methods

call(worker, msg, queue) { || ... } click to toggle source
# File lib/sidekiq/metrics/middleware.rb, line 6
def call(worker, msg, queue)
  if exclude?(worker.class)
    yield
  else
    with_collect_metrics(worker, msg, queue) do
      yield
    end
  end
end

Private Instance Methods

exclude?(worker_class) click to toggle source
# File lib/sidekiq/metrics/middleware.rb, line 42
def exclude?(worker_class)
  Sidekiq::Metrics.configuration.excludes.include?(worker_class.to_s)
end
save_entry_for_worker(worker_status) click to toggle source
# File lib/sidekiq/metrics/middleware.rb, line 38
def save_entry_for_worker(worker_status)
  Sidekiq::Metrics.configuration.adapter.write(worker_status)
end
with_collect_metrics(worker, msg, queue) { || ... } click to toggle source
# File lib/sidekiq/metrics/middleware.rb, line 18
def with_collect_metrics(worker, msg, queue)
  worker_status = { status: 'passed' }
  start = Time.now
  yield
rescue => e
  worker_status[:status] = 'failed'
  raise e
ensure
  finish = Time.now
  worker_status[:retry] = !!msg['retry']
  worker_status[:queue]= msg['queue'] || queue
  worker_status[:class] = worker.class.to_s
  worker_status[:jid] = msg['jid']
  worker_status[:enqueued_at] = msg['enqueued_at']
  worker_status[:started_at] = start.to_f
  worker_status[:finished_at] = finish.to_f

  save_entry_for_worker(worker_status)
end