Module: RocketJob::Plugins::Job::Persistence::ClassMethods
- Defined in:
- lib/rocket_job/plugins/job/persistence.rb
Instance Method Summary collapse
-
#counts_by_state ⇒ Object
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.
Instance Method Details
#counts_by_state ⇒ Object
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
}
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# 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 |