了解 aiohttp.TCPConnector 池和连接限制

我正在试验limit和limit_per_host参数aiohttp.connector.TCPConnector。


在下面的脚本中,我传递connector = aiohttp.connector.TCPConnector(limit=25, limit_per_host=5)到aiohttp.ClientSession,然后向 docs.aiohttp.org 打开 2 个请求,向 github.com 打开 3 个请求。


的结果session.request是 的一个实例aiohttp.ClientResponse,在这个例子中,我故意不调用.close()它,无论是通过.close()还是__aexit__。我认为这会使连接池保持打开状态,并将与该(主机、ssl、端口)的可用连接减少三倍 -1。


下表代表了._available_connections()每个请求之后。 为什么即使在完成对 docs.aiohttp.org 的第二个请求后,该数字仍为 4? 这两个连接可能仍处于打开状态,尚未访问._content或已关闭。可用连接数不应该减少 1 吗?


After Request Num.        To                    _available_connections

1                         docs.aiohttp.org      4

2                         docs.aiohttp.org      4   <--- Why?

3                         github.com            4

4                         github.com            3

5                         github.com            2

此外,为什么._acquired_per_host只包含 1 个键? 我想我可能正在了解TCPConnector; 什么解释了上述行为?


胡子哥哥
浏览 378回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python