java中的接口是类吗
304
2022-09-06
aiohttp 异步http请求-8.TCPConnector限制连接池的大小
前言
使用TCPConnector里面的limit参数限制连接池的大小
limit:同时连接的最大数量, 默认是30limit_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 = aioverify_ssl=False) async with aioas session:
如果您明确不希望有限制,请传递0。例如:
conn = aio参数限制同时打开的连接到同一端点的数量, 同一端点即(host, port, is_ssl)完全相同,默认是0,不限制。
conn = aiolimit=1 时连接数是1
import aioasynciofrom pathlib import Pathasync def down_img(session, url): """下载图片""" name = url.split('/')[-1] # 获得图片名字 img = await session.get(url) print(f'下载状态:{img.status}') # 触发到await就切换,等待get到数据 content = await img.read() # 读取内容 with open('./down_img/'+str(name), 'wb') as f: # 写入至文件 f.write(content) print(f'{name} 下载完成!') return str(url)async def main(URL): conn = aiossl=False) # 建立会话session async with aioas session: # 建立所有任务 tasks = [asyncio.create_task(down_img(session, img_url)) for img_url in URL] # 触发await,等待任务完成 done, pending = await asyncio.wait(tasks) all_results = [done_task.result() for done_task in done] # 获取所有结果 print("ALL RESULT:"+str(all_results))URL = [ ' ' ' ' ' ' ' '= Path('./down_img')if not fp.exists(): fp.mkdir()loop = asyncio.get_event_loop()loop.run_until_complete(main(URL))
运行结果可以看到,会一个个去连接请求。
下载状态:200mountain-477832_960_720.jpg 下载完成!下载状态:200railroad-163518_960_720.jpg 下载完成!下载状态:200maldives-3220702_960_720.jpg 下载完成!下载状态:200dolomites-2580866_960_720.jpg 下载完成!下载状态:200pier-1467984_960_720.jpg 下载完成!下载状态:200iceberg-404966_960_720.jpg 下载完成!下载状态:200plane-513641_960_720.jpg 下载完成!下载状态:200sea-1014710_960_720.jpg 下载完成!
当limit设置为3的时候
conn = aiossl=False) # 建立会话session async with aioas session:
运行结果:
下载状态:200下载状态:200下载状态:200maldives-3220702_960_720.jpg 下载完成!railroad-163518_960_720.jpg 下载完成!下载状态:200下载状态:200dolomites-2580866_960_720.jpg 下载完成!pier-1467984_960_720.jpg 下载完成!下载状态:200下载状态:200plane-513641_960_720.jpg 下载完成!iceberg-404966_960_720.jpg 下载完成!下载状态:200sea-1014710_960_720.jpg 下载完成!mountain-477832_960_720.jpg 下载完成!
从运行结果可以看到,首先会连接3个(连续3个下载状态:200),当这3个中有任务完成的时候,会继续发请求(最大连接数是3).
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~