Sha256: 055cfe00733f1fbac25dd22f4445b8c07af87bb41ebfdae41b92f6a61f3f2f97

Contents?: true

Size: 690 Bytes

Versions: 2

Compression:

Stored size: 690 Bytes

Contents

# frozen_string_literal: true

require 'active_support/core_ext/benchmark'

module Traxor
  class Sidekiq
    DURATION_METRIC = 'sidekiq.worker.duration'
    COUNT_METRIC = 'sidekiq.worker.count'
    EXCEPTION_METRIC = 'sidekiq.worker.exception.count'

    def call(worker, _job, queue)
      tags = Traxor::Tags.sidekiq = { sidekiq_worker: worker.class.name, sidekiq_queue: queue }
      begin
        time = Benchmark.ms { yield }
        Metric.measure DURATION_METRIC, "#{time.round(2)}ms", tags if time.positive?
      rescue StandardError
        Metric.count EXCEPTION_METRIC, 1, tags
        raise
      ensure
        Metric.count COUNT_METRIC, 1, tags
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
traxor-0.1.19 lib/traxor/sidekiq.rb
traxor-0.1.18 lib/traxor/sidekiq.rb