class Yabeda::Sidekiq::ServerMiddleware
Sidekiq
worker middleware
Constants
- JOB_RECORD_CLASS
Public Instance Methods
call(worker, job, queue) { || ... }
click to toggle source
rubocop: disable Metrics/AbcSize, Metrics/MethodLength:
# File lib/yabeda/sidekiq/server_middleware.rb, line 11 def call(worker, job, queue) custom_tags = Yabeda::Sidekiq.custom_tags(worker, job).to_h labels = Yabeda::Sidekiq.labelize(worker, job, queue).merge(custom_tags) start = Process.clock_gettime(Process::CLOCK_MONOTONIC) begin job_instance = JOB_RECORD_CLASS.new(job) Yabeda.sidekiq_job_latency.measure(labels, job_instance.latency) Yabeda::Sidekiq.jobs_started_at[labels][job["jid"]] = start Yabeda.with_tags(**custom_tags) do yield end Yabeda.sidekiq_jobs_success_total.increment(labels) rescue Exception # rubocop: disable Lint/RescueException Yabeda.sidekiq_jobs_failed_total.increment(labels) raise ensure Yabeda.sidekiq_job_runtime.measure(labels, elapsed(start)) Yabeda.sidekiq_jobs_executed_total.increment(labels) Yabeda::Sidekiq.jobs_started_at[labels].delete(job["jid"]) end end
Private Instance Methods
elapsed(start)
click to toggle source
rubocop: enable Metrics/AbcSize, Metrics/MethodLength:
# File lib/yabeda/sidekiq/server_middleware.rb, line 36 def elapsed(start) (Process.clock_gettime(Process::CLOCK_MONOTONIC) - start).round(3) end