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

为何requests.get设置stream=False无法获取对等端IP与端口?

为什么requests.get中stream=False时无法获取对等端IP和端口?

这本质是Requests基于资源回收和内存优化的设计逻辑导致的:

  • 当stream=False时,Requests会自动把整个响应体下载到内存,完成后立即关闭底层HTTP连接(包括socket),并将rsp.raw._connection置为None——这样做是为了及时释放网络资源,避免闲置连接占用系统资源。
  • 当stream=True时,Requests会保持连接打开状态,允许你按需分块读取响应体,此时底层连接对象(含socket)会被保留,因此能通过getpeername()获取对等端的IP和端口。

需要注意:直接访问rsp.raw._connection这类私有属性(以下划线开头)属于非官方用法,后续版本可能存在兼容性问题。如果需要稳定获取对等端信息,可考虑两种替代方案:

  • 请求前通过DNS解析主机名拿到IP,但这种方式无法处理CDN或负载均衡场景下实际连接的节点IP;
  • 使用自定义传输适配器捕获连接信息。

你的测试代码也验证了这一逻辑:stream=False时连接已被回收,_connection变为None,自然无法获取socket相关信息。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 09:35:33