首页 > 解决方案 > URL 请求语句后超时

问题描述

我目前有一些代码旨在尝试执行 URL 请求,如果抛出任何异常以确认它们并继续。

    try:
        x = requests.get(URL)

    except requests.exceptions.Timeout:
        print('timeout error, proceed to next URL')
    except requests.exceptions.TooManyRedirects:
        print('too many redirects, proceed to next URL')
    except requests.exceptions.RequestException:
        print('request exception, proceed to next URL')

但是,使用 try 语句,有时会请求一个 URL,并且请求会持续数小时,并且永远不会抛出 Timeout 异常。本质上它会进入 try 并执行 requests.get(URL) 并且它只是卡住了。不知道为什么会这样。

我怎样才能让它捕捉到超时错误,这样它就不会卡住,而是在指定的时间(比如 10 秒或其他时间)后继续前进?

编辑: URL 是链接到实际网站的有效 URL,并且循环设置正确,这不是问题。

标签: pythonpython-requeststimeoutexception

解决方案


请求对象接受各种参数,其中之一是timeout. 如果您不传递任何值,则默认值为 None,这意味着请求只会在连接关闭时终止。因此,请尝试在您的请求中指定自定义“超时”。我认为 10 秒应该不错。


推荐阅读