Python-异常使“连接异常终止”-如何跳过它并继续

时间:2018-06-30 13:15:04

标签: python exception try-catch

因此,基本上,我使用的请求有时是在其中输入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

我想做的是,每当此错误再次出现为ERROR时-我只想基本上“跳过”它,这意味着它不应该给我打印出来,但是如果出现另一个错误,则为不是

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

然后它将显示错误。

我需要做些什么才能使其打印其他错误,而只是继续中止连接而不打印它?

3 个答案:

答案 0 :(得分:2)

您可以使用以下方法捕获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

尽管要谨慎地捕获异常,但稍后可能会阻止您确定问题的真正原因,从而可能导致问题。

答案 1 :(得分:1)

您可以尝试以下方法:

7

但是,由于许多不同的原因,连接可能会中止,您可能想在if str(e) != 'Connection aborted.' : logger.error(e) 语句中添加其他检查,检查if或其他可用字段。

答案 2 :(得分:1)

除了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