Sha256: f5bf7e4014a0555c51353f46ec656a1e99ac374c294d6dea441b52ff22fbe981

Contents?: true

Size: 608 Bytes

Versions: 25

Compression:

Stored size: 608 Bytes

Contents

module Writefully
  module Tools
    class Retryer
      include Celluloid

      attr_accessor :job

      def retry(job)
        @job   = job
        if job[:message][:tries] <= 5
          after(delay) { queue_retry }
        else
          mark_as_failed
        end 
      end

      def queue_retry
        Writefully.add_job job[:worker], job[:message].merge({ run: true })
      end

      def delay
        (job[:message][:tries] * job[:message][:tries]).seconds
      end

      def mark_as_failed
        Writefully.redis.with { |c| c.sadd 'failed', Marshal.dump(job) }
      end
    end
  end
end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
writefully-0.8.2 lib/writefully/tools/retryer.rb
writefully-0.8.1 lib/writefully/tools/retryer.rb
writefully-0.8.0 lib/writefully/tools/retryer.rb
writefully-0.7.1 lib/writefully/tools/retryer.rb
writefully-0.6.12 lib/writefully/tools/retryer.rb
writefully-0.6.11 lib/writefully/tools/retryer.rb
writefully-0.6.10 lib/writefully/tools/retryer.rb
writefully-0.6.9 lib/writefully/tools/retryer.rb
writefully-0.6.7 lib/writefully/tools/retryer.rb
writefully-0.6.6 lib/writefully/tools/retryer.rb
writefully-0.6.5 lib/writefully/tools/retryer.rb
writefully-0.6.4 lib/writefully/tools/retryer.rb
writefully-0.6.3 lib/writefully/tools/retryer.rb
writefully-0.6.2 lib/writefully/tools/retryer.rb
writefully-0.5.1 lib/writefully/tools/retryer.rb
writefully-0.5.0 lib/writefully/tools/retryer.rb
writefully-0.4.10 lib/writefully/tools/retryer.rb
writefully-0.4.8 lib/writefully/tools/retryer.rb
writefully-0.4.7 lib/writefully/tools/retryer.rb
writefully-0.4.6 lib/writefully/tools/retryer.rb