Prhub

#1714 fix: http_utils. disable system proxy for internal SGLang httpx clients

THUDM/slime · 作者 DongzhuoranZhou · 合并时间 2026-03-22 16:27

分析状态 已生成
文件变更 1提交数 1 · 评论 0
代码增减 +2 / -0
bugfix dependency configuration

执行摘要

修复 httpx 客户端默认使用系统代理导致内部 SGLang 通信失败的问题。

httpx.AsyncClient默认trust_env=True,读取http_proxy/https_proxy环境变量,在集群设置代理用于外部访问(如W&B日志)时,内部SGLang HTTP调用(/generate, /update_weights_from_distributed, /health等)会被代理路由,导致503 Service Unavailable错误。标准解决方法在no_proxy中添加CIDR对httpx无效,因为httpx不支持CIDR表示法。因此需要禁用这些内部客户端的代理功能。

由于变更较小,工程师可快速浏览以理解httpx代理行为;对于涉及集群代理配置的场景,此修复值得参考,建议关注http_utils模块的设计。

讨论亮点

本次PR没有review讨论,变更由作者直接提交并合并,表明问题明确且修复方案简单直接。

实现拆解

修改文件slime/utils/http_utils.py,在两个位置添加trust_env=False:1. init_http_client()函数中的_http_client实例;2. _RayDistributedPost.__init__方法中的self._client实例。这些客户端专门用于内部SGLang通信,不应经过系统代理。

文件 模块 状态 重要度
slime/utils/http_utils.py utils modified 5.0

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

关键符号

init_http_client _RayDistributedPost.__init__

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

风险包括:如果未来这些客户端需要访问外部服务,禁用代理可能导致连接问题;但根据描述,它们仅用于内部通信,风险较低。未新增测试覆盖,可能未验证其他边缘场景,如代理配置变化或网络异常。

影响范围:修复了内部SGLang通信错误,确保生成、权重更新和健康检查等功能正常。对用户透明,提升系统在代理环境下的稳定性和性能。系统层面,避免了不必要的代理路由,减少潜在网络延迟和错误。

代理行为变更 无测试覆盖

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

执行摘要

本PR修复了在集群环境中httpx客户端默认使用系统代理导致内部SGLang HTTP调用失败的bug,通过设置trust_env=False确保内部通信不被误路由,提高系统可靠性,属于有意义的改进。

功能与动机

在部署了代理环境的集群中(例如用于W&B日志记录),httpx.AsyncClient默认信任环境变量(trust_env=True),导致所有内部SGLang HTTP请求(如/generate、/update_weights_from_distributed、/health)被错误地通过代理路由,引发503 Service Unavailable错误。标准解决方法(在no_proxy中添加CIDR)对httpx无效,因为其不支持CIDR表示法。因此,需要禁用这些内部客户端的代理功能以解决通信故障。

实现拆解

修改仅限于slime/utils/http_utils.py文件,在两个位置添加trust_env=False

  • init_http_client()函数中,初始化_http_client时设置。
  • _RayDistributedPost.__init__方法中,初始化self._client时设置。

这些客户端专门用于集群内部的SGLang通信,确保请求直接发送到目标服务,而不经过外部代理。

评论区精华

本次PR没有review讨论,变更由作者直接提交并合并,表明问题明确且修复方案简单直接,无需额外评审。

风险与影响

风险

  • 如果未来这些客户端需要访问外部服务,禁用代理可能导致连接问题;但根据设计,它们仅用于内部通信,风险可控。
  • 未新增测试覆盖,可能未验证其他边缘场景,如代理配置变化或网络异常。

影响

  • 修复了内部SGLang通信错误,确保生成、权重更新和健康检查等功能正常,提升用户体验。
  • 对系统性能有积极影响,避免了不必要的代理路由,减少潜在网络延迟和错误。

关联脉络

与PR #1768("Fix uploading sglang metrics to wandb")相关,两者都处理集群环境下的外部服务访问(如W&B)和代理配置问题,反映了对httpx库和环境变量交互的持续优化,提示团队在类似场景中需注意代理设置。

参与讨论