在 AsyncClient 连接池中识别并关闭单个连接 .
作者: BlackCloud37创建于 2025年8月25日更新于 2026年1月17日
你好, 我正在尝试使用 httpx(在 asyncio 中)来实现我的网络爬虫程序。 在我的使用案例中,为了防止连接被禁用,我通常希望限制单个连接上的请求数量,这意味着: 1. 在发出 N 个请求后关闭连接。 2. 如果连接被禁用,例如收到 HTTP 状态码 429 或任何无效响应,则关闭连接。 我认为这两种情况都可以通过从请求中获取连接对象,将其映射到自定义状态,并在需要时调用 `aclose` 来实现。 但是,通过阅读文档,我无法找到任何方法可以: 1. 识别每个请求的底层连接,以便我可以统计特定连接上的请求数量。 2. 如果满足上述任何条件,则关闭此单个连接。 因此,我目前采用了“每个异步客户端一个连接”的方式来实现此功能。 我将 max_connections 限制为 1,每当我想要断开连接时,我都会丢弃客户端并创建一个新的客户端。 正如文档中所说,这样做是一个坏主意。 因此,我是否可以使用客户端来实现我的目的? 任何帮助都将非常感谢!
内容来源: encode/httpx