module ResqueAdmin::Scheduler::SignalHandling

Attributes

signal_queue[W]

Public Instance Methods

handle_signals() click to toggle source
# File lib/resque_admin/scheduler/signal_handling.rb, line 26
def handle_signals
  loop do
    sig = signal_queue.shift
    break unless sig
    log! "Got #{sig} signal"
    case sig
    when 'INT', 'TERM', 'QUIT' then shutdown
    when 'USR1' then print_schedule
    when 'USR2' then reload_schedule!
    end
  end
end
register_signal_handlers() click to toggle source

For all signals, set the shutdown flag and wait for current poll/enqueing to finish (should be almost instant). In the case of sleeping, exit immediately.

# File lib/resque_admin/scheduler/signal_handling.rb, line 15
def register_signal_handlers
  (Signal.list.keys & %w(INT TERM USR1 USR2 QUIT)).each do |sig|
    trap(sig) do
      signal_queue << sig
      # break sleep in the primary scheduler thread, alowing
      # the signal queue to get processed as soon as possible.
      @th.wakeup if @th && @th.alive?
    end
  end
end
signal_queue() click to toggle source
# File lib/resque_admin/scheduler/signal_handling.rb, line 8
def signal_queue
  @signal_queue ||= []
end