Sha256: a49cf8ae9565eba965445366269758519971dac91e68020851659dfec00bec50

Contents?: true

Size: 1.06 KB

Versions: 8

Compression:

Stored size: 1.06 KB

Contents

# vim:fileencoding=utf-8

module Resque
  module Scheduler
    module SignalHandling
      attr_writer :signal_queue

      def signal_queue
        @signal_queue ||= []
      end

      # 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.
      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

      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
    end
  end
end

Version data entries

8 entries across 8 versions & 4 rubygems

Version Path
resque-scheduler-4.5.0 lib/resque/scheduler/signal_handling.rb
istox-resque-scheduler-1.0.0.pre lib/resque/scheduler/signal_handling.rb
resque-scheduler-4.4.0 lib/resque/scheduler/signal_handling.rb
resque-scheduler-4.3.1 lib/resque/scheduler/signal_handling.rb
resque_admin-scheduler-1.0.2 lib/resque/scheduler/signal_handling.rb
resque-admin-scheduler-1.0.2 lib/resque/scheduler/signal_handling.rb
resque-scheduler-4.3.0 lib/resque/scheduler/signal_handling.rb
resque-scheduler-4.2.1 lib/resque/scheduler/signal_handling.rb