如何抑制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
相关产品推荐
相关产品推荐

