点击上方卡片关注我
设置星标 学习更多技能
httpcore是一个专注于底层HTTP通信的Python库,它是httpx库的核心传输层实现。与高层HTTP客户端库不同,httpcore提供了最小化的HTTP/1.1和HTTP/2协议实现,专注于连接管理、请求发送和响应接收等核心功能。httpcore由Encode团队开发,设计理念是提供一个稳定、高效的HTTP传输层,让其他库可以在此基础上构建更高级的功能,httpcore支持连接池、HTTP/2多路复用、自动重试等特性,同时保持API的简洁性。
使用pip进行安装:
pip install httpcore安装完成后,可以通过以下代码验证是否安装成功:
import httpcoreprint(httpcore.__version__)httpcore提供了底层的HTTP请求接口,通过ConnectionPool管理连接。与高层库不同,httpcore需要手动管理连接池的生命周期,在发送请求时,需要指定完整的URL组件,包括scheme、host、port等。这种显式的API设计使得代码逻辑更加清晰,便于调试和优化。
import httpcore# 创建连接池pool = httpcore.ConnectionPool()# 发送GET请求response = pool.request( method=b"GET", url=(b"https", b"www.example.com", 443, b"/"),)# 读取响应status = response.statusheaders = response.headerscontent = response.contentprint(f"状态码: {status}")print(f"响应内容: {content[:100]}")# 关闭连接池pool.close()httpcore完整支持异步编程,提供了AsyncConnectionPool用于异步场景。异步API在处理高并发请求时具有显著优势,可以在等待IO操作时执行其他任务,大幅提升程序效率。异步连接池的使用方式与同步版本类似,但需要使用async/await语法,异步模式特别适合需要同时处理大量HTTP请求的场景,如爬虫、API网关等应用。
import httpcoreimport asyncioasyncdeffetch_data():# 创建异步连接池asyncwith httpcore.AsyncConnectionPool() as pool:# 发送异步请求 response = await pool.request( method=b"GET", url=(b"https", b"httpbin.org", 443, b"/get"), ) status = response.status content = response.content print(f"状态码: {status}") print(f"响应: {content[:100]}")# 运行异步函数asyncio.run(fetch_data())httpcore支持流式读取响应内容,在处理大文件下载或实时数据流时非常有用,通过stream方法可以逐块读取响应数据,避免一次性加载整个响应到内存,这种方式不仅节省内存,还能更快地开始处理数据。流式处理特别适合下载大文件、处理视频流、实时日志收集等场景。
import httpcorepool = httpcore.ConnectionPool()# 发送请求并获取流式响应response = pool.request( method=b"GET", url=(b"https", b"httpbin.org", 443, b"/stream/10"),)# 流式读取响应print("流式读取响应:")for chunk in response.iter_stream(): print(f"接收数据块: {len(chunk)} 字节")# 处理数据块if chunk: print(chunk[:50])pool.close()httpcore原生支持HTTP/2协议,可以利用多路复用特性在单个连接上并发处理多个请求。HTTP/2相比HTTP/1.1具有更高的传输效率,减少了延迟和带宽消耗。httpcore会自动检测服务器是否支持HTTP/2,并在可能的情况下使用该协议。多路复用特性使得可以在一个TCP连接上同时发送多个请求,避免了队头阻塞问题。
import httpcore# 创建支持HTTP/2的连接池pool = httpcore.ConnectionPool(http2=True)# 发送多个请求,利用HTTP/2多路复用urls = [ (b"https", b"www.example.com", 443, b"/"), (b"https", b"www.example.com", 443, b"/about"), (b"https", b"www.example.com", 443, b"/contact"),]for url in urls: response = pool.request(method=b"GET", url=url) print(f"请求 {url[3]}: 状态码 {response.status}")pool.close()httpcore提供了丰富的连接池配置选项,可以根据应用需求调整连接行为。通过设置最大连接数、连接超时、保持连接时间等参数,可以优化资源使用和性能表现。合理的连接池配置能够在高并发场景下保持稳定性,避免资源耗尽。
import httpcore# 创建自定义配置的连接池pool = httpcore.ConnectionPool( max_connections=100, # 最大连接数 max_keepalive_connections=20, # 保持活跃的连接数 keepalive_expiry=5.0, # 连接保持时间(秒) http2=True, # 启用HTTP/2)# 使用配置好的连接池response = pool.request( method=b"GET", url=(b"https", b"httpbin.org", 443, b"/get"),)print(f"状态码: {response.status}")print(f"HTTP版本: {response.http_version}")pool.close()httpcore是一个专注于底层HTTP通信的Python库,为构建高性能HTTP应用提供了坚实的基础。它完整实现了HTTP/1.1和HTTP/2协议,提供了高效的连接池管理和流式传输能力。同时支持同步和异步两种编程模式,使其能够适应各种应用场景。虽然httpcore的API相对底层,需要开发者手动管理更多细节,但这也带来了更大的灵活性和控制力。对于需要构建自定义HTTP客户端、优化微服务通信或开发高性能爬虫的开发者,httpcore是不可多得的工具。
如果在编程工具充值使用上遇到麻烦,推荐一个牛逼的中转工具!一次性搞定 Codex 、Claude Code和 gemini,内容介绍和付费兑换详见文末阅读原文。


实测 4 个爆火 Skill,一句话生成画布/知识库/任务规划/自动发布
从海外公司注册到 Stripe 收款,跑通了出海收付款全流程(实操分享)
出海建站必备:告别AI味,这两个页面设计 Skills 太牛了!