Qu.plugin(:autoretry) do |*errors| options = {:limit => 3}.merge!(errors.extract_options!) errors << Exception if errors.empty? before :failure do |job, e| if errors.any? {|error| error === e } job.data[:retries] += 1 Qu.requeue job unless job.config[:retries] >= limit halt # don't report the error yet end end end class ProcessPresentation < Qu::Job autoretry Timeout::Error, :times => 5 attr_reader :presentation def initialize(presentation_id) @presentation = Presentation.find(presentation) end def perform # … end end