module RocketJob::Plugins::Job::Persistence::ClassMethods
Public Instance Methods
counts_by_state()
click to toggle source
Returns [Hash<String:Integer>] of the number of jobs in each state Queued jobs are separated into :queued_now and :scheduled
:queued_now are jobs that are awaiting processing and can be processed now. :scheduled are jobs scheduled to run the future.
Note: If there are no jobs in that particular state then the hash will not have a value for it
Example jobs in every state:
RocketJob::Job.counts_by_state # => { :aborted => 1, :completed => 37, :failed => 1, :paused => 3, :queued => 4, :running => 1, :queued_now => 1, :scheduled => 3 }
Example jobs some states:
RocketJob::Job.counts_by_state # => { :failed => 1, :running => 25, :completed => 1237 }
# File lib/rocket_job/plugins/job/persistence.rb, line 43 def counts_by_state counts = {} collection.aggregate( [ { "$group" => { _id: "$state", count: {"$sum" => 1} } } ] ).each do |result| counts[result["_id"].to_sym] = result["count"] end # Calculate :queued_now and :scheduled if there are queued jobs if (queued_count = counts[:queued]) scheduled_count = RocketJob::Job.scheduled.count if scheduled_count.positive? queued_now_count = queued_count - scheduled_count counts[:queued_now] = queued_count - scheduled_count if queued_now_count.positive? counts[:scheduled] = scheduled_count else counts[:queued_now] = queued_count end end counts end