Обработка исключений из urllib2 и механизация в Python
Я новичок в использовании обработки исключений. Я использую модуль механизации, чтобы очистить несколько веб-сайтов. Моя программа часто дает сбой, потому что соединение медленное и время ожидания запросов истекло. Я хотел бы иметь возможность повторить попытку веб-сайта (например, по тайм-ауту) до 5 раз после 30-секундной задержки между каждой попыткой.
я посмотрел наэто StackOverflow ответ и вижу, как я могу обрабатывать различные исключения. Я также вижу (хотя это выглядит очень неуклюже), как я могу поместить попытку / исключение в цикл while для управления 5 попытками ... но я не понимаю, как выйти из цикла или "продолжить", когда соединение успешно, и не было исключений.
from mechanize import Browser
import time
b = Browser()
tried=0
while tried < 5:
try:
r=b.open('http://www.google.com/foobar')
except (mechanize.HTTPError,mechanize.URLError) as e:
if isinstance(e,mechanize.HTTPError):
print e.code
tried += 1
sleep(30)
if tried > 4:
exit()
else:
print e.reason.args
tried += 1
sleep(30)
if tried > 4:
exit()
print "How can I get to here after the first successful b.open() attempt????"
Я был бы признателен за совет (1), как выйти из цикла при успешном открытии, и (2), как сделать весь блок менее неуклюжим / более элегантным.