我有一个相当普遍的问题。我编写了一个相当大的rake任务,通过几个API调用。在每个API调用中,我都编写了一个类似
的故障安全保护程序if response.code != 200
Email.delete
这样可以毫无问题地工作 - 如果整个脚本中的任何API调用都给出了200以外的响应代码,它将会中止。然而,在100次中,似乎至少1-2次我得到超时错误。该脚本将冻结一段时间,然后抛出超时错误。
如果脚本在任何时候超时,我如何逃避该超时错误并确保我的脚本正在运行Email.delete?
总体而言,我的脚本正在创建~10,000封电子邮件。如果它中途超时,我不想重新发送所有~10,000封电子邮件。我宁愿删除所有电子邮件并重新开始。
答案 0 :(得分: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