Sha256: d25ed8c0af21494ef1010800e9588386d1a075f72454837e2075b82331e9dfcc

Contents?: true

Size: 1.05 KB

Versions: 6

Compression:

Stored size: 1.05 KB

Contents

# Borrowed from:
# https://github.com/jeremy/resque-rails/blob/master/lib/resque/rails/queue.rb
module Sufia
  module Resque
    class Queue
      attr_reader :default_queue_name

      def initialize(default_queue_name)
        @default_queue_name = default_queue_name
      end

      def push(job)
        push_tries = 0
        queue = job.respond_to?(:queue_name) ? job.queue_name : default_queue_name
        begin
          ::Resque.enqueue_to queue, MarshaledJob, Base64.encode64(Marshal.dump(job))
        rescue Redis::CannotConnectError
          ActiveFedora::Base.logger.error "Redis is down!"
        rescue Redis::TimeoutError => error
          ActiveFedora::Base.logger.warn "Redis Timed out.  Trying again! #{job.inspect}"
          push_tries += 1
          # fail for good if the tries is greater than 3
          raise error if push_tries >= 3
          sleep 0.01
          retry
        end
      end
    end

    class MarshaledJob
      def self.perform(marshaled_job)
        Marshal.load(Base64.decode64(marshaled_job)).run
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
sufia-models-6.7.0 lib/sufia/models/resque.rb
sufia-models-6.6.1 lib/sufia/models/resque.rb
sufia-models-6.6.0 lib/sufia/models/resque.rb
sufia-models-6.5.0 lib/sufia/models/resque.rb
sufia-models-6.4.0 lib/sufia/models/resque.rb
sufia-models-6.3.0 lib/sufia/models/resque.rb