Sha256: c04d2d868f726d21d08c8bcde6fe4d151f422710b2ae8e68ab5e1b30ebde3041

Contents?: true

Size: 1.25 KB

Versions: 6

Compression:

Stored size: 1.25 KB

Contents

module Delayed
  class Worker
    SLEEP = 5

    cattr_accessor :logger
    self.logger = if defined?(Merb::Logger)
      Merb.logger
    elsif defined?(RAILS_DEFAULT_LOGGER)
      RAILS_DEFAULT_LOGGER
    end

    def initialize(options={})
      @quiet = options[:quiet]
      Delayed::Job.min_priority = options[:min_priority] if options.has_key?(:min_priority)
      Delayed::Job.max_priority = options[:max_priority] if options.has_key?(:max_priority)
      Delayed::Job.job_types    = options[:job_types]    if options.has_key?(:job_types)
    end

    def start
      say "*** Starting job worker #{Delayed::Job.worker_name}"

      trap('TERM') { say 'Exiting...'; $exit = true }
      trap('INT')  { say 'Exiting...'; $exit = true }

      loop do
        result = nil

        realtime = Benchmark.realtime do
          result = Delayed::Job.work_off
        end

        count = result.sum

        break if $exit

        if count.zero?
          sleep(SLEEP)
        else
          say "#{count} jobs processed at %.4f j/s, %d failed ..." % [count / realtime, result.last]
        end

        break if $exit
      end

    ensure
      Delayed::Job.clear_locks!
    end

    def say(text)
      puts text unless @quiet
      logger.info text if logger
    end

  end
end

Version data entries

6 entries across 6 versions & 3 rubygems

Version Path
blaxter-delayed_job-1.7.99 lib/delayed/worker.rb
ezpub-delayed_job-1.7.0 lib/delayed/worker.rb
delayed_job_on_steroids-1.7.5 lib/delayed/worker.rb
delayed_job_on_steroids-1.7.4 lib/delayed/worker.rb
delayed_job_on_steroids-1.7.3 lib/delayed/worker.rb
delayed_job_on_steroids-1.7.2 lib/delayed/worker.rb