Module: Bellbro::SidekiqUtils
Instance Method Summary collapse
- #_jobs ⇒ Object
- #_workers ⇒ Object
- #active_workers ⇒ Object
- #clear_all_queues ⇒ Object
- #job_domain(job) ⇒ Object
- #job_jid(job) ⇒ Object
- #jobs_for_class(klass) ⇒ Object
- #jobs_for_queue(q) ⇒ Object
- #jobs_in_flight_with_domain(domain) ⇒ Object
- #jobs_with_domain(domain) ⇒ Object
- #number_of_active_workers(q_name) ⇒ Object
- #queued_jobs ⇒ Object
- #queues ⇒ Object
- #worker_class(worker) ⇒ Object
- #worker_domain(worker) ⇒ Object
- #worker_jid(worker) ⇒ Object
- #worker_queue(worker) ⇒ Object
- #worker_time(worker) ⇒ Object
- #workers ⇒ Object
- #workers_for_class(klass) ⇒ Object
- #workers_for_queue(q) ⇒ Object
- #workers_with_domain(domain) ⇒ Object
Instance Method Details
#_jobs ⇒ Object
12 13 14 15 16 |
# File 'lib/bellbro/sidekiq_utils.rb', line 12 def _jobs Retryable.retryable(on: Redis::TimeoutError) do jobs_for_class("#{self.name}") end end |
#_workers ⇒ Object
6 7 8 9 10 |
# File 'lib/bellbro/sidekiq_utils.rb', line 6 def _workers Retryable.retryable(on: Redis::TimeoutError) do workers_for_class("#{self.name}") end end |
#active_workers ⇒ Object
18 19 20 21 22 23 24 25 26 |
# File 'lib/bellbro/sidekiq_utils.rb', line 18 def active_workers _workers.map do |w| { :domain => worker_domain(w), :jid => worker_jid(w), :time => worker_time(w) } end end |
#clear_all_queues ⇒ Object
108 109 110 111 112 |
# File 'lib/bellbro/sidekiq_utils.rb', line 108 def clear_all_queues queues.each do |q| clear_queue(q) end end |
#job_domain(job) ⇒ Object
92 93 94 |
# File 'lib/bellbro/sidekiq_utils.rb', line 92 def job_domain(job) job.args.first["domain"] if job.args.any? end |
#job_jid(job) ⇒ Object
96 97 98 |
# File 'lib/bellbro/sidekiq_utils.rb', line 96 def job_jid(job) job.jid end |
#jobs_for_class(klass) ⇒ Object
86 87 88 89 90 |
# File 'lib/bellbro/sidekiq_utils.rb', line 86 def jobs_for_class(klass) queues.map do |q| jobs_for_queue(q).select { |job| job.klass == klass } end.flatten end |
#jobs_for_queue(q) ⇒ Object
82 83 84 |
# File 'lib/bellbro/sidekiq_utils.rb', line 82 def jobs_for_queue(q) Sidekiq::Queue.new(q) end |
#jobs_in_flight_with_domain(domain) ⇒ Object
40 41 42 |
# File 'lib/bellbro/sidekiq_utils.rb', line 40 def jobs_in_flight_with_domain(domain) jobs_with_domain(domain) + workers_with_domain(domain) end |
#jobs_with_domain(domain) ⇒ Object
36 37 38 |
# File 'lib/bellbro/sidekiq_utils.rb', line 36 def jobs_with_domain(domain) queued_jobs.select { |j| j[:domain] == domain } end |
#number_of_active_workers(q_name) ⇒ Object
100 101 102 |
# File 'lib/bellbro/sidekiq_utils.rb', line 100 def number_of_active_workers(q_name) workers_for_queue(q_name).count end |
#queued_jobs ⇒ Object
28 29 30 |
# File 'lib/bellbro/sidekiq_utils.rb', line 28 def queued_jobs _jobs.map { |j| {:domain => job_domain(j), :jid => job_jid(j)} } end |
#queues ⇒ Object
104 105 106 |
# File 'lib/bellbro/sidekiq_utils.rb', line 104 def queues Sidekiq::Stats::Queues.new.lengths.keys end |
#worker_class(worker) ⇒ Object
74 75 76 |
# File 'lib/bellbro/sidekiq_utils.rb', line 74 def worker_class(worker) worker["payload"]["class"] if worker["payload"] end |
#worker_domain(worker) ⇒ Object
66 67 68 |
# File 'lib/bellbro/sidekiq_utils.rb', line 66 def worker_domain(worker) worker["payload"]["args"].first["domain"] if worker["payload"] && worker["payload"]["args"].try(:any?) end |
#worker_jid(worker) ⇒ Object
62 63 64 |
# File 'lib/bellbro/sidekiq_utils.rb', line 62 def worker_jid(worker) worker["payload"]["jid"] if worker["payload"] end |
#worker_queue(worker) ⇒ Object
78 79 80 |
# File 'lib/bellbro/sidekiq_utils.rb', line 78 def worker_queue(worker) worker["queue"] end |
#worker_time(worker) ⇒ Object
70 71 72 |
# File 'lib/bellbro/sidekiq_utils.rb', line 70 def worker_time(worker) worker["run_at"] end |
#workers ⇒ Object
44 45 46 47 48 |
# File 'lib/bellbro/sidekiq_utils.rb', line 44 def workers Sidekiq::Workers.new.map do |process_id, thread_id, worker| worker end end |
#workers_for_class(klass) ⇒ Object
56 57 58 59 60 |
# File 'lib/bellbro/sidekiq_utils.rb', line 56 def workers_for_class(klass) workers.select do |worker| worker_class(worker) == klass end end |
#workers_for_queue(q) ⇒ Object
50 51 52 53 54 |
# File 'lib/bellbro/sidekiq_utils.rb', line 50 def workers_for_queue(q) workers.select do |worker| worker_queue(worker) == q end end |
#workers_with_domain(domain) ⇒ Object
32 33 34 |
# File 'lib/bellbro/sidekiq_utils.rb', line 32 def workers_with_domain(domain) active_workers.select { |w| w[:domain] == domain } end |