我有一个相当普遍的问题。我已经编写了一个相当大的rake任务,它要经过几个API调用。在每次API调用中,我都编写了一个类似的故障保险
if response.code != 200
Email.delete
因此,这可以在没有任何问题的情况下工作-如果整个脚本中的任何API调用给出的响应代码不是200,它将中止。然而,在100次中,我似乎至少有1-2次出现超时错误。脚本将冻结一段时间,然后抛出超时错误。
如果脚本在任何时候都超时了,我如何逃脱超时错误并确保我的脚本正在运行Email.delete?
总体而言,我的脚本正在创建大约10000封电子邮件。如果中途超时,我不想重新发送大约10000封电子邮件。我宁愿删除所有的电子邮件,然后重新开始。
您可以从超时错误中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