事情本身不复杂,线索都在日志里。内网要过代理访问模型网关,代码写的是 httpx.Client(proxies=’http://10.0.0.9:8080′),升到 0.28 后直接 TypeError: Client.__init__() got an unexpected keyword argument ‘proxies’。
第一反应是「环境变量 NO_PROXY 的匹配规则同时调整了」,验证下来不成立。
真正麻烦的地方在于,几个原因的现象几乎一样。0.28 把参数改名成单数 proxy,旧名被移除。还有一种是依赖它的 SDK 内部也传 proxies,跟着一起报错。
还有一种情况,有的包锁着旧 httpx,装完出现两个版本共存。
第一件事是确认实际装的是哪个版本
python -c "import httpx;print(httpx.__version__)"
然后改成单数参数重新构造客户端
python -c "import httpx;print(httpx.Client(proxy='http://10.0.0.9:8080'))"
随后用环境变量兜底并放行内网直连
$env:NO_PROXY='10.0.0.0/8,localhost'
末了确认请求确实走了代理
curl -x http://10.0.0.9:8080 -s -o /dev/null -w "%{http_code}\n" http://gw.internal/v1/models
这次没动代码,只在配置和运行环境上找原因。
改完先别撤,确认这几项。客户端构造不再报 TypeError,外网走代理、内网直连,代理日志里能看到对应连接记录。
补一句。proxies 是复数老写法,升级 httpx 前要确认依赖它的 SDK 也一起升,否则只是把报错挪到库内部。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。
