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

如何抑制requests_cache启用stale_if_error时的错误/警告输出?

抑制requests_cache stale_if_error模式下的错误输出

方法一:调整requests_cache日志级别

requests_cache在启用stale_if_error时,会将请求失败的详情以日志形式打印。你可以通过调高requests_cache模块的日志级别,屏蔽这些调试级别的输出。

示例代码:

import logging
import requests_cache
import time
from datetime import timedelta

# 将requests_cache的日志级别设为WARNING,过滤掉INFO级别的错误详情
logging.getLogger('requests_cache').setLevel(logging.WARNING)

session = requests_cache.CachedSession(
    expire_after=timedelta(seconds=1),
    stale_if_error=timedelta(minutes=5),
)
session.cache.clear()

response = session.get("https://httpbin.org/get")
print(response.from_cache, response.is_expired)

time.sleep(10)  # 等待缓存过期

response = session.get("https://httpbin.org/get", timeout=5)
print(response.from_cache, response.is_expired)

方法二:捕获请求异常(可选)

虽然stale_if_error已经自动处理了失败时返回缓存的逻辑,但如果需要手动控制异常捕获,也可以用try-except块包裹请求。不过这种方法并非必要,仅作为补充方案:

import requests_cache
import time
from datetime import timedelta
from requests.exceptions import RequestException

session = requests_cache.CachedSession(
    expire_after=timedelta(seconds=1),
    stale_if_error=timedelta(minutes=5),
)
session.cache.clear()

response = session.get("https://httpbin.org/get")
print(response.from_cache, response.is_expired)

time.sleep(10)

try:
    response = session.get("https://httpbin.org/get", timeout=5)
except RequestException:
    # 无需额外操作,stale_if_error已自动返回缓存结果
    pass
print(response.from_cache, response.is_expired)

优先推荐第一种方法,通过日志级别控制输出,更简洁高效。

内容的提问来源于stack exchange,提问作者Nico Schlömer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 12:16:10