我想我想通过制作一个简单的脚本来学习新的python异步等待语法,更具体地说是asyncio模块,它允许你在一个下载多个资源 .
但现在我被卡住了 .
While researching I came across two options to limit the number of concurrent requests:
将aiohttp.TCPConnector(带限制参数)传递给aiohttp.ClientSession或
使用asyncio.Semaphore .
是否有首选选项,或者如果您只想限制并发连接数,它们是否可以互换使用?性能方面(大致)是否相等?
两者似乎都有默认值100并发连接/操作 . 如果我只使用信号量限制为500,那么aiohttp内部会隐式地将我锁定为100个并发连接吗?
这对我来说都是非常新的和不清楚的 . 请随时指出我的任何误解或我的代码中的缺陷 .
这是我目前包含两个选项的代码(我应该删除哪些?):
Bonus Questions:
如何处理(最好重试x次)出现错误的coros?
coro完成后立即保存返回数据(通知我的DataHandler)的最佳方法是什么?我不希望最后全部保存,因为我可以尽快开始处理结果 .
小号
import asyncio
from tqdm import tqdm
import uvloop as uvloop
from aiohttp import ClientSession, TCPConnector, BasicAuth
# You can ignore this class
class DummyDataHandler(Data