Сразу скажу, что мне нужно готовое решение или наглядный пример.
Суть вот в чём…
Есть у меня скрипт, который коннектится urllib'ом к хосту, берет данные и обрабатывает их (парсит, в общем).
Но, из-за нестабильности коннекта и огромного числа запросов, иногда возникают ошибки (исключения).
обычную обработку я сделал, по принципу (это кусочек кода):
i = 0
while i < len(b):
time.sleep(5)
try:
req = ur.urlopen(b[i]).read()
except urllib.socket.error:
req = ur.urlopen(b[i]).read()
except IOError:
req = ur.urlopen(b[i]).read()
Однако, бывает, что исключение обработалось, но оно всё равно, возникает, уже вне блока try.
Попробовал сделать чуть иначе:
def urlim(biurl):
try:
rq = ur.urlopen(biurl).read()
except urllib.socket.error:
rq = ur.urlopen(biurl).read()
except IOError:
rq = ur.urlopen(biurl).read()
return rq
i = 0
while i < len(b):
time.sleep(5)
url = b[i]
print url
while True:
try:
req = ur.urlopen(url).read()
except urllib.socket.error:
req = urlim(url)
except IOError:
req = urlim(url)
else:
break
В общем, всё равно, ошибка возникает и НЕ обрабатывается.
Возник дисконнект у меня, или сервер сильно задержал ответ - вылезла ошибочка и скрипт остановился :(
Пожалуйста, помогите сделать полностью бесконечную и,по возможности, более красивую реализацию постоянной обработки исключений.
Если не совсем понятно описал - отпишитесь, я постараюсь конкретизировать.
Спасибо.