Pergunta

Eu tenho um Rufus "cada trabalho" que é executado periodicamente, mas às vezes ele pode falhar ao executar sua tarefa.

Em caso de falha, gostaria de reagendar uma nova tentativa em breve, em vez de esperar até o próximo ciclo.

class PollProducts

  def initialize()
  end

  def call(job)
    puts "Updating products"

    begin
      # Do something that might fail
      raise if rand(3) == 1
    rescue Exception => e
      puts "Request failed - recheduling: #{e}"
      # job.in("5s") <-- What can I do?
    end
  end
end

scheduler.every '6h', PollProducts.new, :first_in => '5s', :blocking => true

Isso é possível?

Foi útil?

Solução

Ok, isso funcionou para mim:

job.scheduler.in '5s', self
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top