讲师中心 微信公众号

工具推荐

视频效率加速
Seko
Seko

AI短剧一键生成成片

立刻MV
立刻MV

低成本歌曲 MV、视频生成

剧云
剧云

中文短剧剧本制作平台

Laper
Laper

剧本策划到成片协作

Python HTTP 连接池的工作机制

落雪吖_1274

落雪吖_1274

发布时间:2026-02-14 21:33:15

|

662人浏览过

|

来源于php中文网

原创

requests默认使用连接池是因为底层urllib3默认启用连接池,每次请求复用TCP连接以减少握手开销;默认池大小为10,空闲连接保留120秒,服务端返回Connection: close时立即移除连接。

python http 连接池的工作机制

requests 为什么默认用连接池

因为 requests 底层用的是 urllib3,而 urllib3 默认启用连接池——不是“可选功能”,是它处理 HTTP 请求的默认方式。不手动干预时,每次调用 requests.get() 都会尝试复用已有 TCP 连接,而不是每次都新建。

这能省掉三次握手、TLS 握手开销,尤其在高频请求同一域名时,延迟下降明显。但前提是:目标服务支持 HTTP/1.1 的 Keep-Alive,且没主动断连。

  • 默认池大小是 10(pool_connections 和 pool_maxsize 均为 10)
  • 空闲连接最长保留 120 秒(pool_block=False 时超时抛异常,不是阻塞等待)
  • 若服务端发了 Connection: close,连接立刻从池中移除,不复用

如何控制连接池大小和复用行为

靠 requests.Session() 配置底层 urllib3.PoolManager。直接改 Session 的 adapter 是唯一可靠方式。

常见错误是以为设置全局变量或改 requests 模块属性就能生效——不行,每个 Session 独立管理自己的池。

立即学习“Python免费学习笔记(深入)”;

Python Hardener
Python Hardener

通过完整的安全审查、代码整洁重构、健壮的错误处理、正确的日志记录以及完整的文档字符串覆盖,强化 Python 脚本。

下载
  • 增大池容量:
    s = requests.Session()<br>s.mount('https://', requests.adapters.HTTPAdapter(pool_connections=20, pool_maxsize=20))
  • 禁用复用(调试用):requests.get(url, headers={'Connection': 'close'}),但只对单次请求有效
  • 想强制复用,得确保服务端返回 Keep-Alive,且客户端没设 Connection: close

ConnectionPoolMaxSizeError 是什么情况

这是 urllib3 抛的 MaxRetryError 子类,本质是池满 + pool_block=False(默认值),导致新请求拿不到空闲连接。

典型场景:并发高、池太小、响应慢,连接长期被占着。不是网络故障,是资源调度卡住了。

  • 现象:MaxRetryError: HTTPSConnectionPool(host='x', port=443): Max retries exceeded with url: / (Caused by PoolFullError(...))
  • 别急着加池大小——先看是否请求没及时关闭(比如忘了 .close() 或没用 with)、响应体没读完(response.content 没触发读取)
  • 真正要调参时,优先调 pool_maxsize,pool_connections 只影响不同 host 的池数量,一般不用动

长连接失效后怎么自动重试

连接池本身不负责重试逻辑,靠 urllib3.Retry 控制。但注意:连接复用失败(比如 socket 已断)触发的重试,和业务层 HTTP 5xx 重试是两回事。

默认只对连接级错误(如 ConnectionError、Timeout)重试,不对 404 或 500 重试——除非你显式配置 status_forcelist。

  • 启用连接失败自动重试:
    adapter = requests.adapters.HTTPAdapter(max_retries=3)<br>s.mount('https://', adapter)
  • 重试会换新连接(可能新建 TCP),不是“继续用旧连接”
  • 如果服务端在 Keep-Alive 期间突然关连接,第一次请求大概率失败,第二次才成功——这就是重试在起作用

池里的连接状态是懒检测的,只有真正用时才发现断了。所以别指望“定期心跳”,实际就是靠失败+重试兜底。

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

讯飞智文

一款面向学习和办公场景的AI文档创作工具,可辅助生成PPT与Word文档,提高资料整理和内容制作效率。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

相关专题

更多
session失效的原因
session失效的原因

session失效的原因有会话超时、会话数量限制、会话完整性检查、服务器重启、浏览器或设备问题等等。详细介绍:1、会话超时:服务器为Session设置了一个默认的超时时间,当用户在一段时间内没有与服务器交互时,Session将自动失效;2、会话数量限制:服务器为每个用户的Session数量设置了一个限制,当用户创建的Session数量超过这个限制时,最新的会覆盖最早的等等。

580

2023.10.17

session失效解决方法
session失效解决方法

session失效通常是由于 session 的生存时间过期或者服务器关闭导致的。其解决办法:1、延长session的生存时间;2、使用持久化存储;3、使用cookie;4、异步更新session;5、使用会话管理中间件。

876

2023.10.18

cookie与session的区别
cookie与session的区别

本专题整合了cookie与session的区别和使用方法等相关内容,阅读专题下面的文章了解更详细的内容。

1986

2025.08.19

全局变量怎么定义
全局变量怎么定义

本专题整合了全局变量相关内容,阅读专题下面的文章了解更多详细内容。

5305

2025.09.18

python 全局变量
python 全局变量

本专题整合了python中全局变量定义相关教程,阅读专题下面的文章了解更多详细内容。

2250

2025.09.18

c++ 全局变量
c++ 全局变量

本专题整合了c++全局变量的使用、定义、作用域等等内容,阅读专题下面的文章了解更多详细内容。

199

2026.03.17

http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

4063

2023.11.09

http请求415错误怎么解决
http请求415错误怎么解决

解决方法:1、检查请求头中的Content-Type;2、检查请求体中的数据格式;3、使用适当的编码格式;4、使用适当的请求方法;5、检查服务器端的支持情况。更多http请求415错误怎么解决的相关内容,可以阅读下面的文章。

994

2023.11.14

Go-Zero API开发使用教程
Go-Zero API开发使用教程

本专题聚焦Go-Zero的API开发,拆解.api描述文件的语法结构、路由与分组定义、参数绑定与校验规则,说明统一响应体、JWT鉴权、跨域与接口文档生成的落地方式,并给出网关聚合与接口测试的实践建议。

20

2026.11.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn