先看现象。HTTPS_PROXY 已经设置,requests 能走代理,openai SDK 却直连,出口 IP 显示是办公网地址,白名单没放行所以全部超时。

把日志和配置对完,能解释这个现象的基本就这几处。SDK 基于 httpx 对代理变量的信任开关不同。另一种情况是代码里显式传了空的 http_client。

少数情况下是NO_PROXY 覆盖了目标域名。

不容易想到的是,变量只在一个 shell 会话里生效。

第一件事是看请求的实际出口

curl -s https://ifconfig.me

显式构造带代理的客户端

python -c "import httpx;print(httpx.Client(proxy='http://proxy:8080',trust_env=False))"

接着检查 NO_PROXY 是否包含目标域

Get-ChildItem Env: | Where-Object Name -match 'NO_PROXY'

末了在配置层统一注入代理再验证

python check_ip.py --expect 10.20.30.40

隔了一天再看,现象没变,说明不是偶发。

那几天正好在做别的变更,先把时间线对齐才敢动手。

排查用的命令都是临时敲的,没有写成脚本,事后才整理。

改完先别撤,确认这几项。SDK 请求的出口 IP 与代理一致,白名单校验通过,请求延迟与 requests 相同。

不同库对环境变量的信任程度不一样,报错前先确认请求到底从哪个 IP 出去。报错文案容易误导,真正的原因往往在相邻那一层的日志里。

作者 9823189