Repolode
ross

ross/requests-futures

为 Python requests 库提供的轻量扩展,基于 concurrent.futures 异步发送 HTTP 请求。

Star
2,222
Fork
158
未关闭 Issue
1
最近提交
16天前

这是什么?

requests-futures 为常用的 Python requests 库增加了异步调用能力。FuturesSession 不会在每次请求时阻塞,而是返回 Future 对象,请求在后台执行,需要响应时再调用 result() 获取。除返回值外,其 API 与 requests.Session 保持一致,异常会在 result() 时抛出。

默认使用包含 8 个工作线程的 ThreadPoolExecutor,也可以传入 ProcessPoolExecutor 改用多进程执行。将会话用作上下文管理器时,退出代码块会取消所有尚未开始的排队请求。库还支持为 future 附加自定义信息,并提供 hooks 作为已弃用 background_callback 的替代。

默认执行器中的多个线程共享同一个 requests.Session,而 Session 并非线程安全,因此在并发请求中修改共享的 cookie 或 headers 需要谨慎。需要 Python 3.10 或更高版本。

核心功能

  • 01沿用 requests.Session 的熟悉 API,返回 Future 对象。
  • 02默认使用 8 个工作线程的 ThreadPoolExecutor,也支持 ProcessPoolExecutor。
  • 03会话关闭时取消尚未开始执行的排队请求。
  • 04可为 future 附加自定义数据,便于区分各个请求。
  • 05提供 hooks,用于替代已弃用的 background_callback。

适用场景

  • 在 Python 脚本中并行抓取大量相互独立的 URL。
  • 在现有基于 requests 的代码中以最小改动加入后台 HTTP 调用。
  • 当单个请求内存占用较高时,使用进程池批量执行大量请求。

快速上手

  1. 1

    使用 pip 安装该包

    pip install requests-futures
  2. 2

    创建 FuturesSession 发送请求;对每个 future 调用 result() 获取响应

使用前须知

  • 需要 Python 3.10 或更高版本。
  • 默认执行器在多个线程间共享同一个 requests.Session,而 Session 不是线程安全的。
  • 项目元数据中未明确标注许可证。

标签

常见问题

requests-futures 是什么?
为 Python requests 库提供的轻量扩展,基于 concurrent.futures 异步发送 HTTP 请求。 requests-futures 为常用的 Python requests 库增加了异步调用能力。FuturesSession 不会在每次请求时阻塞,而是返回 Future 对象,请求在后台执行,需要响应时再调用 result() 获取。除返回值外,其 API 与 requests.Session 保持一致,异常会在 result() 时抛出。
requests-futures 可以免费使用吗?用的什么许可证?
requests-futures 以 Other 许可证开源。用于商业产品前,请先确认许可证条款。
requests-futures 还在维护吗?
活跃维护中。requests-futures 最近一次提交是在 2026年10月5日。
requests-futures 适合用来做什么?
在 Python 脚本中并行抓取大量相互独立的 URL。 在现有基于 requests 的代码中以最小改动加入后台 HTTP 调用。 当单个请求内存占用较高时,使用进程池批量执行大量请求。
requests-futures 怎么安装和运行?
使用 pip 安装该包: pip install requests-futures 创建 FuturesSession 发送请求;对每个 future 调用 result() 获取响应
在哪里获取 requests-futures?
源代码和安装说明在 GitHub 上:https://github.com/ross/requests-futures

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目