Как мы можем сообщить delayed_job, когда отложенное задание завершается неудачно, поэтому оно будет автоматически повторяться? - PullRequest
0 голосов
/ 11 марта 2011

Наше приложение размещено на heroku, и мы используем отложенную работу при отправке информации в удаленную систему (через GET на URL с некоторыми параметрами URL)

удаленная система обычно возвращает код успеха, но этоон очень занят, он возвращает код tryagain.

предположим, что наш метод

def send_info
   the_url = "http://mydomain.com/dosomething?arg=#{self.someval}"
   the_result = open(the_url).read
   successflag = get_success_flag_from(the_result)
end

, и поэтому где-то в нашем коде мы делаем

@widget.delay.send_info

и чтовсе работает нормально.

За исключением того, что он не обрабатывает автоматически случай, когда пульт дистанционного управления сказал, что попытается позже.

Есть ли способ для метода send_info (который будет выполнять отложенное задание)сказать "delayed_job" повторить попытку "?Нужно ли нам выдавать какое-то пользовательское исключение или что-то в этом роде?

1 Ответ

2 голосов
/ 11 марта 2011

Возникновение любого вида исключения должно привести к тому, что delayed_job будет запрашивать его (только для попытки-столько-много раз); если вам не нужно особенное исключение, вы можете просто поднять RuntimeError.

...