You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中完全屏蔽requests和urllib3的连接错误?

解决requests连接错误仍打印到控制台的问题

问题根源

你看到的Error fetching...错误信息,不是requests或urllib3的默认日志输出,而是你的代码中**fetch_url函数内部在主动打印错误**。你当前的try/except只捕获了check_module里的异常,但如果fetch_url本身在遇到错误时直接用print或日志输出了错误内容,这些信息还是会出现在控制台。

解决方案

1. 修正fetch_url函数,移除错误打印逻辑

找到fetch_url的实现代码,删掉里面主动打印错误的语句。比如如果它原本是这样写的:

def fetch_url(url, method="GET", headers=None):
    try:
        session = create_retry_session()
        response = session.request(method, url, headers=headers)
        return response
    except Exception as e:
        print(f"Error fetching {url} with method {method}: {e}")  # 这行是错误来源
        return None

把print那一行删掉,改成仅在DEBUG模式下输出(如果需要调试):

def fetch_url(url, method="GET", headers=None):
    try:
        session = create_retry_session()
        response = session.request(method, url, headers=headers, timeout=10)  # 建议添加超时
        return response
    except requests.exceptions.RequestException as e:
        if DEBUG:  # 仅调试时输出
            print(f"Debug: 请求 {url} 失败: {str(e)}")
        return None

2. 完善日志抑制规则

除了你当前的设置,还需要抑制urllib3的connectionpool子日志器,重试相关的底层日志可能来自这里:

logging.getLogger("urllib3.connectionpool").setLevel(logging.CRITICAL)

3. 确保异常捕获覆盖全面

在fetch_url内部直接捕获所有请求相关异常,避免异常逃逸到外层被其他逻辑意外打印:

def fetch_url(url, method="GET", headers=None):
    try:
        session = create_retry_session()
        response = session.request(method, url, headers=headers, timeout=10)
        return response
    except requests.exceptions.RequestException:  # 捕获所有请求类异常
        return None

验证效果

修改完成后,运行代码时连接错误就不会再自动打印到控制台,只有开启DEBUG模式时才会输出调试信息,符合你的需求。

内容的提问来源于stack exchange,提问作者P_n

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 20:15:18