class Sidekiq::Monitor::Counters::Base
Attributes
enqueued[R]
name[R]
runtime[R]
Public Class Methods
all(force = false)
click to toggle source
# File lib/sidekiq/monitor/counters/base.rb, line 19 def self.all(force = false) update if force || update_needed? Sidekiq.redis do |conn| names.inject({}) do |memo, name| memo[name] = conn.hgetall(new(name).key) memo end end end
events_column()
click to toggle source
# File lib/sidekiq/monitor/counters/base.rb, line 15 def self.events_column raise NotImplementedError end
names()
click to toggle source
# File lib/sidekiq/monitor/counters/base.rb, line 30 def self.names Sidekiq.redis do |conn| conn.smembers(namespace).sort end end
namespace()
click to toggle source
# File lib/sidekiq/monitor/counters/base.rb, line 11 def self.namespace raise NotImplementedError end
new(name, enqueued = nil, runtime = nil)
click to toggle source
# File lib/sidekiq/monitor/counters/base.rb, line 7 def initialize(name, enqueued = nil, runtime = nil) @name, @enqueued, @runtime = name, enqueued, runtime end
update()
click to toggle source
# File lib/sidekiq/monitor/counters/base.rb, line 36 def self.update events = Sidekiq::Monitor::Event Sidekiq.redis { |conn| conn.set("#{namespace}:updated_at", Time.now) } events.connection.execute("SELECT #{events_column}, COUNT(id), AVG(runtime) FROM #{events.table_name} \ GROUP BY #{events_column}").values.each do |name, enqueued, runtime| new(name, enqueued, runtime).save end end
update_needed?()
click to toggle source
# File lib/sidekiq/monitor/counters/base.rb, line 46 def self.update_needed? updated_at.nil? || updated_at.advance(seconds: 10).past? end
updated_at()
click to toggle source
# File lib/sidekiq/monitor/counters/base.rb, line 50 def self.updated_at Sidekiq.redis { |conn| Time.parse conn.get("#{namespace}:updated_at") } rescue end
Public Instance Methods
key()
click to toggle source
# File lib/sidekiq/monitor/counters/base.rb, line 55 def key "#{self.class.namespace}:#{name}" end
save()
click to toggle source
# File lib/sidekiq/monitor/counters/base.rb, line 59 def save Sidekiq.redis do |conn| conn.pipelined do conn.hmset(key, :enqueued, enqueued, :runtime, runtime) conn.sadd(self.class.namespace, name) end end end