2013-08-27 35 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