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

使用trio与httpx出现TrioDeprecationWarning的原因及消除方法

问题描述

测试代码

import trio, httpx

async def amain():
    async with httpx.AsyncClient() as client:
        r = await client.get('https://icanhazip.com/')
        print(r.text)

trio.run(amain)

运行警告输出

> python test.py

/path/to/.venv/lib/python3.10/site-packages/anyio/_backends/_trio.py:164: 
TrioDeprecationWarning: trio.MultiError is deprecated since Trio 0.22.0; 
use BaseExceptionGroup (on Python 3.11 and later) or exceptiongroup.BaseExceptionGroup
(earlier versions) instead

  class ExceptionGroup(BaseExceptionGroup, trio.MultiError):
193.37.32.201

环境信息

  • 全新.venv虚拟环境
  • Python版本:最新版(通过最新pyenv安装,pyenv由最新brew安装)
  • trio版本:0.22.0(PyPI最新)
  • httpx版本:0.23.0(PyPI最新)

疑问

该警告产生的原因是什么?如何消除该警告?


问题解答

警告产生原因

trio 0.22.0版本开始正式废弃trio.MultiError类,官方推荐Python 3.11及以上版本使用原生的BaseExceptionGroup,Python 3.11以下版本使用exceptiongroup库中的BaseExceptionGroup替代。而httpx依赖的anyio库,其trio后端代码仍在继承已被废弃的trio.MultiError,因此触发了trio的废弃警告。

消除警告的方法

有三种可行方案:

  1. 升级anyio到兼容版本:安装适配trio 0.22.0的anyio新版本(后续发布的anyio版本已修复该兼容问题),执行命令:
    pip install --upgrade anyio
    
  2. 降级trio版本:若暂时无法升级anyio,可将trio降级至0.21.x系列版本,避开废弃警告,执行命令:
    pip install trio==0.21.0
    
  3. 临时屏蔽警告:如果只是临时不想看到警告,可在代码开头添加警告过滤逻辑:
    import warnings
    warnings.filterwarnings("ignore", category=DeprecationWarning, module="anyio._backends._trio")
    
    注意:此方法仅隐藏警告,未从根源解决兼容问题,仅建议临时场景使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 03:35:23