Обработка исключений из 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), как сделать весь блок менее неуклюжим / более элегантным.

Ответы на вопрос(3)

Ваш ответ на вопрос