module Resque::Plugins::Director
Public Instance Methods
after_enqueue_scale_workers(*args)
click to toggle source
# File lib/resque/plugins/director.rb, line 21 def after_enqueue_scale_workers(*args) set_queue return if Config.no_enqueue_scale Scaler.scale_within_requirements end
after_perform_direct_workers(*args)
click to toggle source
# File lib/resque/plugins/director.rb, line 46 def after_perform_direct_workers(*args) set_queue jobs_in_queue = Resque.size(@queue.to_s) Scaler.scale_down_to_minimum if jobs_in_queue == 0 end
after_pop_direct_workers(start_time=Time.now.utc)
click to toggle source
# File lib/resque/plugins/director.rb, line 32 def after_pop_direct_workers(start_time=Time.now.utc) return unless scaling_config_set? set_queue time_through_queue = Time.now.utc - start_time jobs_in_queue = Resque.size(@queue.to_s) if scale_up?(time_through_queue, jobs_in_queue) Scaler.scale_up elsif scale_down?(time_through_queue, jobs_in_queue) Scaler.scale_down end end
attach_remora()
click to toggle source
# File lib/resque/plugins/director.rb, line 6 def attach_remora {:created_at => Time.now.utc.to_i} end
before_perform_direct_workers(*args)
click to toggle source
# File lib/resque/plugins/director.rb, line 27 def before_perform_direct_workers(*args) set_queue Scaler.scale_within_requirements if Config.no_enqueue_scale end
direct(options={})
click to toggle source
# File lib/resque/plugins/director.rb, line 16 def direct(options={}) Config.setup(options) Config.queue = options[:queue] end
on_failure_direct_workers(*args)
click to toggle source
# File lib/resque/plugins/director.rb, line 52 def on_failure_direct_workers(*args) set_queue jobs_in_queue = Resque.size(@queue.to_s) Scaler.scale_down_to_minimum if jobs_in_queue == 0 end
process_remora(queue, job)
click to toggle source
# File lib/resque/plugins/director.rb, line 10 def process_remora(queue, job) timestamp = job['created_at'] start_time = timestamp.nil? ? Time.now.utc : Time.at(timestamp.to_i).utc after_pop_direct_workers(start_time) end
Private Instance Methods
scale_down?(time_through_queue, jobs_in_queue)
click to toggle source
# File lib/resque/plugins/director.rb, line 74 def scale_down?(time_through_queue, jobs_in_queue) time_limits = Config.max_time > 0 && time_through_queue < (Config.max_time/2) queue_limits = Config.max_queue > 0 && jobs_in_queue < (Config.max_queue/2) (Config.max_time <= 0 || time_limits) && (Config.max_queue <= 0 || queue_limits) end
scale_up?(time_through_queue, jobs_in_queue)
click to toggle source
# File lib/resque/plugins/director.rb, line 68 def scale_up?(time_through_queue, jobs_in_queue) time_limits = Config.max_time > 0 && time_through_queue > Config.max_time queue_limits = Config.max_queue > 0 && jobs_in_queue > Config.max_queue time_limits || queue_limits end
scaling_config_set?()
click to toggle source
# File lib/resque/plugins/director.rb, line 64 def scaling_config_set? Config.max_time > 0 || Config.max_queue > 0 end
set_queue()
click to toggle source
# File lib/resque/plugins/director.rb, line 60 def set_queue Config.queue ||= @queue.to_s end