Python - Исключение дает «Соединение прервано» - как я могу пропустить его и продолжить - PullRequest
0 голосов
/ 30 июня 2018

Так что, в основном, я использую запросы, в которых я иногда ввожу URL-адрес и выдает сообщение об ошибке:

('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',))

, что хорошо, когда я делаю новые запросы снова или во сне, что я делаю сейчас, как это:

 except Exception as e:
        logger.error(e)
        randomtime = random.randint(1,5)
        logger.warn('ERROR - Retrying again website %s, retrying in %d secs' % (url, randomtime))
        time.sleep(randomtime)
        continue

и я хочу сделать так, чтобы всякий раз, когда эта ошибка повторялась как ОШИБКА - я просто хочу пропустить ее, что означает, что она не должна давать мне ее отпечаток, но если возникает другая ошибка, которая НЕ

('Connection aborted.', RemoteDisconnected('Remote end closed connection without response',))

, тогда он должен напечатать ошибку.

Что мне нужно сделать, чтобы он распечатал другие ошибки, но просто продолжите, если Соединение прервано, не распечатав его?

Ответы [ 3 ]

0 голосов
/ 30 июня 2018

Вы должны исключить RemoteDisconected отдельно от других исключений:

from http.client import RemoteDisconnected    
try:
   ...
except RemoteDisconnected:
    continue
except Exception as e:
    logger.error(e)
    randomtime = random.randint(1,5)
    logger.warn('ERROR - Retrying again website %s, retrying in %d secs' % (url, randomtime))
    time.sleep(randomtime)
    continue
0 голосов
/ 30 июня 2018

Вы можете поймать исключение RemoteDisconnected с помощью:

try:
    #your code here
except requests.exceptions.ConnectionError as e:
    pass
except Exception as e:
    logger.error(e)
    randomtime = random.randint(1,5)
    logger.warn('ERROR - Retrying again website %s, retrying in %d secs' % (url, randomtime))
    time.sleep(randomtime)
    continue

Хотя будьте осторожны с тихим перехватом исключений, это может вызвать проблемы позже, если вы не определите истинную причину проблемы.

0 голосов
/ 30 июня 2018

Вы можете попробовать это:

if str(e) != 'Connection aborted.' :
    logger.error(e)

Однако соединение может быть прервано по разным причинам, и вы можете добавить дополнительные проверки в оператор if, проверяя e.reason или другие доступные поля.

...