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

如何正确使用freezegun的ignore packages功能解决JWT报错与urllib3警告

freezegun ignore packages功能正确用法及问题解决方案

一、ignore packages功能核心逻辑

freezegun的忽略机制是基于调用栈的模块路径判断生效:只有当调用datetime/time相关函数的代码属于被忽略的包名下的模块时,才会返回真实系统时间,并非整个包的所有时间相关操作都直接豁免。
使用时需要注意三个核心规则:

  • 所有需要忽略的第三方库,尽量在配置freezegun忽略规则之后再导入,避免第三方库导入时就缓存了被冻结的datetime对象
  • freeze_time()的ignore参数会完全覆盖默认忽略列表,如果你需要在默认基础上追加忽略的包,应该用extend_ignore参数,不要直接传ignore覆盖默认配置;如果使用0.3.15以下的旧版本freezegun没有extend_ignore参数,可以手动拼接默认忽略列表:
    from freezegun.api import DEFAULT_IGNORE_LIST
    custom_ignore = DEFAULT_IGNORE_LIST + ["你的自定义包名"]
    
  • 忽略的包名要尽量覆盖实际执行时间调用的模块所属的顶级包,不要漏依赖的底层包。

二、谷歌存储API JWT报错解决方案

你之前的配置不生效,核心原因是直接传ignore参数覆盖了默认忽略列表,且谷歌相关库的导入时机早于freezegun配置,导致导入时就获取了冻结时间。调整后的可运行代码如下:

# 先配置freezegun,再导入谷歌相关库
import freezegun

ig_ms = ["google", "google.oauth2", "google.auth", "google.cloud", "urllib3", "ssl", "requests"]

with freezegun.freeze_time("2017-05-21", extend_ignore=ig_ms):
    from google.cloud import storage
    client = storage.Client()
    print(list(client.list_buckets()))

三、urllib3 SystemTimeWarning警告解决方案

这个警告是urllib3做SSL证书校验前检查系统时间触发的,要解决可以按以下两种方式处理:

  1. 按正确规则配置忽略列表:
    import freezegun
    
    ig_list = ["urllib3", "ssl"]
    with freezegun.freeze_time("2017-05-21", extend_ignore=ig_list):
        import urllib3
        http = urllib3.PoolManager()
        resp = http.request("GET", "https://httpbin.org/robots.txt")
        print(resp.status)
    
  2. 如果确认业务逻辑不需要这个警告,可直接过滤对应警告类型:
    import freezegun
    import warnings
    from urllib3.exceptions import SystemTimeWarning
    
    warnings.filterwarnings("ignore", category=SystemTimeWarning)
    
    with freezegun.freeze_time("2017-05-21", extend_ignore=["urllib3", "ssl"]):
        import urllib3
        http = urllib3.PoolManager()
        resp = http.request("GET", "https://httpbin.org/robots.txt")
        print(resp.status)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:57:02