18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
# File 'lib/delayed_job_extras/job.rb', line 18
def stats(start_date = 1.day.ago.beginning_of_day, end_date = Time.now.beginning_of_day)
workers = {}
Delayed::Job.find_with_destroyed(:all, :select => :worker_class_name, :group => :worker_class_name).each do |dj|
dj.worker_class_name = 'UNKNOWN' if dj.worker_class_name.blank?
workers[dj.worker_class_name] = {}
end
workers.each do |worker, stats|
wname = (worker == 'UNKNOWN' ? nil : worker)
stats[:total] = Delayed::Job.count_with_destroyed(:conditions => {:worker_class_name => wname})
stats[:remaining] = Delayed::Job.count(:conditions => {:worker_class_name => wname})
stats[:processed] = stats[:total] - stats[:remaining]
stats[:failures] = Delayed::Job.count(:conditions => ['worker_class_name = ? and attempts > 1', wname])
if start_date
date_stats = {:start_date => start_date, :end_date => end_date}
date_stats[:total] = Delayed::Job.count_with_destroyed(:conditions => ['worker_class_name = ? and (created_at > ? and created_at < ?)', wname, start_date, end_date])
date_stats[:remaining] = Delayed::Job.count(:conditions => ['worker_class_name = ? and (created_at > ? and created_at < ?)', wname, start_date, end_date])
date_stats[:processed] = stats[:total] - stats[:remaining]
date_stats[:failures] = Delayed::Job.count(:conditions => ['worker_class_name = ? and attempts > 1 and (created_at > ? and created_at < ?)', wname, start_date, end_date])
stats[:date_range] = date_stats
end
workers[worker] = stats
end
workers
end
|