如何设置aiohttp中TCPConnector的连接池最大限制?

2026-05-28 19:012阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计694个文字,预计阅读时间需要3分钟。

如何设置aiohttp中TCPConnector的连接池最大限制?

前言:使用TCPConnector的limit参数限制连接池的大小

limit:限制连接池的大小,即同时连接的最大数量,默认是30

limit_per_host:同一端点的最大连接数,即同一主机和端口的连接数,默认是0,表示不限制

前言

使用TCPConnector里面的limit参数限制连接池的大小

  • limit:同时连接的最大数量, 默认是30
  • limit_per_host: 同一端点的最大连接数量。同一端点即(host, port, is_ssl)完全相同,默认是0,不限制

TCPConnector

当没有设置limit参数的时候,默认值是100 (limit=100),以下是TCPConnector部分源码

class TCPConnector(BaseConnector):
"""TCP connector.
limit - The total number of simultaneous connections.
limit_per_host - Number of simultaneous connections to one host.

"""

def __init__(
self,
......
limit: int = 100,

如果要限制同时打开的连接数量,可以修改limit的值,如下是设置30个连接数:

conn = aioimg.558idc.com/uploadfile/allimg/python/mountain-477832_960_720.jpg',
'img.558idc.com/uploadfile/allimg/python/railroad-163518_960_720.jpg',
'img.558idc.com/uploadfile/allimg/python/maldives-3220702_960_720.jpg',
'img.558idc.com/uploadfile/allimg/python/dolomites-2580866_960_720.jpg',
'img.558idc.com/uploadfile/allimg/python/pier-1467984_960_720.jpg',
'img.558idc.com/uploadfile/allimg/python/iceberg-404966_960_720.jpg',
'img.558idc.com/uploadfile/allimg/python/plane-513641_960_720.jpg',
'img.558idc.com/uploadfile/allimg/python/sea-1014710_960_720.jpg'
]

fp = Path('./down_img')
if not fp.exists():
fp.mkdir()

loop = asyncio.get_event_loop()
loop.run_until_complete(main(URL))

运行结果可以看到,会一个个去连接请求。

下载状态:200
mountain-477832_960_720.jpg 下载完成!
下载状态:200
railroad-163518_960_720.jpg 下载完成!
下载状态:200
maldives-3220702_960_720.jpg 下载完成!
下载状态:200
dolomites-2580866_960_720.jpg 下载完成!
下载状态:200
pier-1467984_960_720.jpg 下载完成!
下载状态:200
iceberg-404966_960_720.jpg 下载完成!
下载状态:200
plane-513641_960_720.jpg 下载完成!
下载状态:200
sea-1014710_960_720.jpg 下载完成!

当limit设置为3的时候

如何设置aiohttp中TCPConnector的连接池最大限制?

conn = aiohttp.TCPConnector(limit=3, ssl=False)
# 建立会话session
async with aiohttp.ClientSession(connector=conn) as session:

运行结果:

下载状态:200
下载状态:200
下载状态:200
maldives-3220702_960_720.jpg 下载完成!
railroad-163518_960_720.jpg 下载完成!
下载状态:200
下载状态:200
dolomites-2580866_960_720.jpg 下载完成!
pier-1467984_960_720.jpg 下载完成!
下载状态:200
下载状态:200
plane-513641_960_720.jpg 下载完成!
iceberg-404966_960_720.jpg 下载完成!
下载状态:200
sea-1014710_960_720.jpg 下载完成!
mountain-477832_960_720.jpg 下载完成!

从运行结果可以看到,首先会连接3个(连续3个下载状态:200),当这3个中有任务完成的时候,会继续发请求(最大连接数是3).




本文共计694个文字,预计阅读时间需要3分钟。

如何设置aiohttp中TCPConnector的连接池最大限制?

前言:使用TCPConnector的limit参数限制连接池的大小

limit:限制连接池的大小,即同时连接的最大数量,默认是30

limit_per_host:同一端点的最大连接数,即同一主机和端口的连接数,默认是0,表示不限制

前言

使用TCPConnector里面的limit参数限制连接池的大小

  • limit:同时连接的最大数量, 默认是30
  • limit_per_host: 同一端点的最大连接数量。同一端点即(host, port, is_ssl)完全相同,默认是0,不限制

TCPConnector

当没有设置limit参数的时候,默认值是100 (limit=100),以下是TCPConnector部分源码

class TCPConnector(BaseConnector):
"""TCP connector.
limit - The total number of simultaneous connections.
limit_per_host - Number of simultaneous connections to one host.

"""

def __init__(
self,
......
limit: int = 100,

如果要限制同时打开的连接数量,可以修改limit的值,如下是设置30个连接数:

conn = aioimg.558idc.com/uploadfile/allimg/python/mountain-477832_960_720.jpg',
'img.558idc.com/uploadfile/allimg/python/railroad-163518_960_720.jpg',
'img.558idc.com/uploadfile/allimg/python/maldives-3220702_960_720.jpg',
'img.558idc.com/uploadfile/allimg/python/dolomites-2580866_960_720.jpg',
'img.558idc.com/uploadfile/allimg/python/pier-1467984_960_720.jpg',
'img.558idc.com/uploadfile/allimg/python/iceberg-404966_960_720.jpg',
'img.558idc.com/uploadfile/allimg/python/plane-513641_960_720.jpg',
'img.558idc.com/uploadfile/allimg/python/sea-1014710_960_720.jpg'
]

fp = Path('./down_img')
if not fp.exists():
fp.mkdir()

loop = asyncio.get_event_loop()
loop.run_until_complete(main(URL))

运行结果可以看到,会一个个去连接请求。

下载状态:200
mountain-477832_960_720.jpg 下载完成!
下载状态:200
railroad-163518_960_720.jpg 下载完成!
下载状态:200
maldives-3220702_960_720.jpg 下载完成!
下载状态:200
dolomites-2580866_960_720.jpg 下载完成!
下载状态:200
pier-1467984_960_720.jpg 下载完成!
下载状态:200
iceberg-404966_960_720.jpg 下载完成!
下载状态:200
plane-513641_960_720.jpg 下载完成!
下载状态:200
sea-1014710_960_720.jpg 下载完成!

当limit设置为3的时候

如何设置aiohttp中TCPConnector的连接池最大限制?

conn = aiohttp.TCPConnector(limit=3, ssl=False)
# 建立会话session
async with aiohttp.ClientSession(connector=conn) as session:

运行结果:

下载状态:200
下载状态:200
下载状态:200
maldives-3220702_960_720.jpg 下载完成!
railroad-163518_960_720.jpg 下载完成!
下载状态:200
下载状态:200
dolomites-2580866_960_720.jpg 下载完成!
pier-1467984_960_720.jpg 下载完成!
下载状态:200
下载状态:200
plane-513641_960_720.jpg 下载完成!
iceberg-404966_960_720.jpg 下载完成!
下载状态:200
sea-1014710_960_720.jpg 下载完成!
mountain-477832_960_720.jpg 下载完成!

从运行结果可以看到,首先会连接3个(连续3个下载状态:200),当这3个中有任务完成的时候,会继续发请求(最大连接数是3).