aiohttp 仅下载正文的前 n 个字节

aiohttp download only first n-bytes of body

我们正在使用 aiohttp 将 post 数据导入弹性搜索服务器。对此类插入的 Elastic 会为每个插入的行生成响应,这会导致大量不需要的流量返回到客户端应用程序。我们想使用以下代码解决这个问题

response = await http_session.request("POST", url, data = data, params = params)
first_n_bytes = (await response.content.read(n_bytes)).decode("utf-8")
response.release()
# response.close()

首先我们尝试了发布方法,但从文档和带宽测量来看,它似乎也下载了整个内容。然后我们尝试了 response.close() 但我们不确定这样做是否安全,同时为其他请求保持相同的 http_session。

问题是 response.close() 是否安全,它是否能解决我们的问题,或者是否有其他异步方式。

是的,调用 resp.close() 是安全的。 它关闭打开的与服务器的连接而不读取响应尾部。

显然显式连接关闭不支持保持活动状态,这就是为什么建议默认使用 resp.release()

但在你的情况下 resp.close() 应该工作得很好。