2011-03-11 20 views
0

我們的應用程序託管在Heroku(用一些網址參數通過GET到URL)如果延遲任務失敗,我們如何才能知道delayed_job,以便它能夠自動重試?

遠程系統通常返回一個成功代碼發送時,遠程系統信息,我們使用的是延遲的工作,但它; S真正的繁忙,它返回一個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「再次重試我」有什麼辦法嗎?我們是否需要拋出一些自定義異常或什麼?

回答

2

引發任何類型的異常都應該導致delayed_job重載它(僅限於嘗試很多次);如果您不特別需要自定義例外,則可以提出RuntimeError

+1

有意思,謝謝!我們的方法是否可以訪問已嘗試嘗試的次數?我知道#是在delayed_job表中,但我不清楚方法/實例如何確定表中的WHICH條目與該方法/實例相關聯。 – jpwynn 2011-03-11 17:39:23

相關問題