Sha256: f2e851cb4ca8b865f219e3951a74fba32a3152816b9336dbb4d8a0eae906d801

Contents?: true

Size: 725 Bytes

Versions: 7

Compression:

Stored size: 725 Bytes

Contents

module Toro
  module Middleware
    module Server
      class Retry
        def call(job, worker)
          begin
            yield
          rescue Exception => exception
            if worker.toro_options[:retry_interval]
              interval = worker.toro_options[:retry_interval]
              job.reload
              job.properties ||= {}
              job.properties['retry:errors'] ||= []
              job.properties['retry:errors'] << "#{exception.class.name} -- #{exception.message} -- #{Time.now}"
              job.status = 'scheduled'
              job.scheduled_at = Time.now + interval
              job.save
            end
            raise exception
          end
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
toro-0.2.2 lib/toro/middleware/server/retry.rb
toro-0.2.1 lib/toro/middleware/server/retry.rb
toro-0.2.0 lib/toro/middleware/server/retry.rb
toro-0.1.1 lib/toro/middleware/server/retry.rb
toro-0.1.0 lib/toro/middleware/server/retry.rb
toro-0.0.3 lib/toro/middleware/server/retry.rb
toro-0.0.2 lib/toro/middleware/server/retry.rb