2013-08-27 36 views
0

我有一個相當普遍的問題。我寫了一個相當大的rake任務,經過幾次API調用。在每個API調用我已經寫了像Ruby Rake任務API超時錯誤

if response.code != 200 
    Email.delete 

所以這工作沒有任何問題故障安全 - 如果在整個腳本中的任何API調用給出了超過200以外的任何它將中止響應代碼。但是,100次中至少有1-2次,我會遇到超時錯誤。該腳本將凍結一段時間,然後引發超時錯誤。

如何避免超時錯誤,並確保腳本在任何時候超時都運行Email.delete?

大圖是我的腳本創建了約10,000封電子郵件。如果中途退出,我不希望重新發送所有〜10,000封電子郵件。我寧願刪除所有電子郵件並重新開始。

回答

0

您可以從rescue超時錯誤。

def do_rake_task 
    # work goes here... 
    # I hope it isn't scraping email addresses for spam... 
rescue Timeout::Error => e 
    # log #{e} for later, maybe 
    Email.delete 
end 
+0

'rescue',這樣做。我會根據內容文件中的內容發送電子郵件,而不是垃圾郵件檢查。謝謝您的幫助。 – Luigi