module Resque::Plugins::Queue::Status
Resque::Plugins::Queue::Status
. It provides adding simple queue statuses for your jobs. You can specify your own key for your queues and check the status.
You can use it doing extend Resque::Plugins::Queue::Status
For example
class ExampleJob extend Resque::Plugins::Queue::Status def self.perform() puts 'hoge' end end Resque.enqueue(ExampleJob, queue_status_key: 'hoge') ExampleJob.current_queue_status('hoge')
The queue status key lasts 24 hours to expire
Constants
- COMPLETED
- FAILED
- IN_PROGESS
- STATUSES
- VERSION
Public Instance Methods
_namespaced_queue_status(queue_status_key)
click to toggle source
# File lib/resque/plugins/queue/status.rb, line 78 def _namespaced_queue_status(queue_status_key) return if queue_status_key.nil? queue_status_key_name = Resque::Job.decode( Resque::Job.encode(queue_status_key) ) "#{_prefix}:#{queue_status_key_name}" end
_prefix()
click to toggle source
# File lib/resque/plugins/queue/status.rb, line 100 def _prefix "queuestatus:#{name}" end
_queue_status_key(args)
click to toggle source
# File lib/resque/plugins/queue/status.rb, line 74 def _queue_status_key(args) args['queue_status_key'] || args[:queue_status_key] end
_set_status(args)
click to toggle source
# File lib/resque/plugins/queue/status.rb, line 87 def _set_status(args) queue_status = _namespaced_queue_status(args[:queue_status_key]) return if queue_status.nil? Resque.redis.set( queue_status, args.slice(:status, :meta).to_json, ex: 24 * 60 * 60 ) queue_status end
after_perform_queue_status(args)
click to toggle source
# File lib/resque/plugins/queue/status.rb, line 44 def after_perform_queue_status(args) _set_status( queue_status_key: _queue_status_key(args), status: COMPLETED ) end
all_queue_statuses()
click to toggle source
# File lib/resque/plugins/queue/status.rb, line 66 def all_queue_statuses Resque.redis.keys("#{_prefix}:*") end
before_enqueue_queue_status(args)
click to toggle source
# File lib/resque/plugins/queue/status.rb, line 37 def before_enqueue_queue_status(args) _set_status( queue_status_key: _queue_status_key(args), status: IN_PROGESS ) end
clear_all_queue_statuses()
click to toggle source
# File lib/resque/plugins/queue/status.rb, line 70 def clear_all_queue_statuses Resque.redis.del(*all_queue_statuses) unless all_queue_statuses.empty? end
current_queue_status(queue_status_key)
click to toggle source
# File lib/resque/plugins/queue/status.rb, line 59 def current_queue_status(queue_status_key) JSON.parse( Resque.redis.get(_namespaced_queue_status(queue_status_key)) || '{}', symbolize_names: true ) end
on_failure_queue_status(err, args)
click to toggle source
# File lib/resque/plugins/queue/status.rb, line 51 def on_failure_queue_status(err, args) _set_status( queue_status_key: _queue_status_key(args), status: FAILED, meta: err.to_yaml ) end