当前位置: 首页 > news >正文

httpcore

httpcore是一个专注于底层HTTP通信的Python库,是httpx库的核心传输层实现。与HTTP客户端库不同,httpcore提供了最小化的HTTP/1.1和HTTP/2协议实现,专注于连接管理、请求发送和响应接收等核心功能,让其他库可以在此基础上构建更高级的功能,httpcore支持连接池、HTTP/2多路复用、自动重试等特性。

1、安装

 pip install httpcore  -i https://pypi.mirrors.ustc.edu.cn/simple/ 

核心特性

  • HTTP/1.1和HTTP/2支持:完整实现两种协议,自动协商使用最优协议
  • 连接池管理:高效的连接复用机制,减少连接建立开销
  • 异步和同步API:同时提供async和sync两种接口,适应不同场景
  • 流式传输:支持请求和响应的流式处理,适合大文件传输
  • 超时控制:精细的超时配置,包括连接超时、读取超时等
  • 代理支持:支持HTTP和SOCKS代理配置
  • TLS/SSL支持:完整的HTTPS支持,可自定义SSL配置

基本功能

1、发送HTTP请求

httpcore提供了底层的HTTP请求接口,通过ConnectionPool管理连接。httpcore需要手动管理连接池的生命周期,在发送请求时,需要指定完整的URL组件,包括scheme、host、port等。

import httpcore# 创建连接池
pool = httpcore.ConnectionPool()# 发送GET请求
response = pool.request(method="get",url="https://www.baidu.com/",
)# 读取响应
status = response.status
headers = response.headers
content = response.contentprint(f"状态码:{status}")
print(f"响应内容:{content[:100]}")# 关闭连接池
pool.close()

  

2、异步HTTP请求

httpcore完整支持异步编程,提供了AsyncConnectionPool用于异步场景。异步API在处理高并发请求时具有显著优势,可以在等待IO操作时执行其他任务,大幅提升程序效率。异步连接池的使用方式与同步版本类似,但需要使用async/await语法,异步模式特别适合需要同时处理大量HTTP请求的场景,如爬虫、API网关等应用。

import httpcore, asyncioasync def fetch_data():# 创建异步连接池async with httpcore.AsyncConnectionPool() as pool:# 发送异步请求response = await pool.request(method="GET",url="https://www.baidu.com/",)status = response.statuscontent = response.contentprint(f"状态码:{status}")print(f"响应:{content[:100]}")# 运行异步函数
asyncio.run(fetch_data())

  

3、流式响应处理

httpcore支持流式读取响应内容,在处理大文件下载或实时数据流时非常有用,通过stream方法可以逐块读取响应数据,避免一次性加载整个响应到内存,这种方式不仅节省内存,还能更快地开始处理数据。流式处理特别适合下载大文件、处理视频流、实时日志收集等场景。

import httpcore# 创建连接池
pool = httpcore.ConnectionPool()# 发送GET请求
response = pool.request(method="get",url="https://www.baidu.com/",
)# 流式读取响应
print("流式读取响应:")
for chunk in response.iter_stream():print(f"接收数据块:{len(chunk)}字节")# 处理数据块if chunk:print(chunk[:50])# 关闭连接池
pool.close()

  

高级功能

1、HTTP/2支持

httpcore原生支持HTTP/2协议,可以利用多路复用特性在单个连接上并发处理多个请求。HTTP/2相比HTTP/1.1具有更高的传输效率,减少了延迟和带宽消耗。httpcore会自动检测服务器是否支持HTTP/2,并在可能的情况下使用该协议。多路复用特性使得可以在一个TCP连接上同时发送多个请求,避免了队头阻塞问题。

import httpcore# 创建连接池
pool = httpcore.ConnectionPool(http2=True)# 发送多个请求,利用HTTP/2多路复用
urls = [("https://www.baidu.com/"),("https://map.baidu.com/"),("https://image.baidu.com/"),
]for url in urls:response = pool.request(method="GET", url=url)print(f"请求{url[3]}: 状态码{response.status}")pool.close()

  

2、连接池配置

httpcore提供了丰富的连接池配置选项,可以根据应用需求调整连接行为。通过设置最大连接数、连接超时、保持连接时间等参数,可以优化资源使用和性能表现。合理的连接池配置能够在高并发场景下保持稳定性,避免资源耗尽。

import httpcore# 创建连接池
pool = httpcore.ConnectionPool(http2=True,  # 启用HTTP/2max_connections=100,  # 最大连接数max_keepalive_connections=20,  # 保持活跃的连接数keepalive_expiry=5.0,  # 连接保持时间(秒)
)# 使用配置好的连接池
response = pool.request(method="GET",url="https://www.baidu.com/",
)
print(f"状态码:{response.status}")
pool.close()

  

 

http://www.jsqmd.com/news/428308/

相关文章:

  • 深入理解JMeter中的JSON Extractor
  • springboot基于微信小程序旧物共享平台设计和实现
  • 如何最有效监控共享文件访问、分配共享文件访问权限并记录共享文件访问日志?
  • 北京企业如何选择小程序定制开发服务商?2026年多行业场景化开发实践观察 - 品牌2026
  • debug方法三:printf
  • springboot基于微信小程序二手交易平台
  • 北京小程序定制开发如何匹配行业需求?2026年本地化技术服务实践解析 - 品牌2026
  • AtCoder Weekday Contest 0007 Beta题解(AWC 0007 Beta A-E)
  • C6678处理板设计原理图:8-基于双TMS320C6678 + XC7K420T的6U CPCI Express高速数据处理平台
  • 基于Java+SpringBoot+Vue基于局域网的档案管理系统
  • 2026年3月广东精雕机厂家推荐,高性能高可靠性优质品牌 - 品牌鉴赏师
  • 盒马鲜生卡的使用技巧与回收方法这里看! - 团团收购物卡回收
  • 2026 年 10 款 AI 文献综述工具深度测评,本科生成文效率直接拉满
  • springboot基于微信小程序的的老年防诈科普及交流平台设计
  • 盲盒小程序无限赏玩法说明
  • 模型训练、评估与推理
  • 双标通关・专业不破:Paperzz 降重 / 降 AIGC 功能全场景实操白皮书
  • 探讨南通好用的团体服优质供应商,怎么选择 - mypinpai
  • 盲盒小程序一番赏说明
  • 双极板电阻率测试仪校准必要性
  • AUMOVIO EDI 需求分析
  • 论文查重 “生死局” 破局指南:Paperzz 降重 / 降 AIGC 双引擎,让 AI 生成内容也能过知网 2.13
  • 讲讲成都靠谱的中药培训机构排名,成都新华高级技工学校排第几 - 工业品牌热点
  • 2026年3月北京企业用柴油服务商推荐,企业单位专用柴油供应 - 品牌鉴赏师
  • 双标通关指南:Paperzz 降重 / 降 AIGC 功能,精准适配知网维普 2026 最新检测体系
  • 科学仪器行业GEO优化首选:化工仪器网,全链路技术+效果保障标杆服务商 - 品牌推荐大师
  • 说说青岛贴车衣服务哪家口碑好,为你推荐靠谱之选 - 工业设备
  • 2026年锥形不锈钢旗杆源头厂家权威推荐榜单:不锈钢锥形旗杆/电动旗杆源头厂家精选 - 深度智识库
  • 2026年液压设备厂家经验盘点:从选型避坑到排行榜推荐 - 企师傅推荐官
  • 2026年2月四川吊篮/高空作业吊篮/电动吊篮/建筑吊篮/施工吊篮/外墙吊篮/工程吊篮/吊篮设备市场竞争力深度分析报告 - 2026年企业推荐榜