2

我们正在使用 aiohttp 将数据发布到弹性搜索服务器。此类插入的 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() 是否安全以及它是否能解决我们的问题,或者是否有其他异步方式。

4

1 回答 1

3

是的,打电话resp.close()是安全的。它在不读取响应尾部的情况下关闭与服务器的打开连接。

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

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

于 2016-07-14T07:55:51.047 回答