aiohttp:速率限制并行请求

aiohttp:速率限制并行请求,第1张

aiohttp:速率限制并行请求

如果我理解你很好,你想限制并发请求数?

有一个内部的对象

asyncio
命名
Semaphore
,它就像一个异步
RLock

semaphore = asyncio.Semaphore(50)#...async def limit_wrap(url):    async with semaphore:        # do what you want#...results = asyncio.gather([limit_wrap(url) for url in urls])
更新

假设我做50个并发请求,他们也都在2秒内完成。因此,它不接触限制(只有每秒25个请求)。

这意味着我应该做100个并发请求,他们也都在2秒内太(每秒50个请求)完成。但在此之前,你实际上使这些要求,你怎么能确定他们将如何悠长?

或者,如果你不介意 每秒完成的请求,每秒发出的请求 。您可以:

async def loop_wrap(urls):    for url in urls:        asyncio.ensure_future(download(url))        await asyncio.sleep(1/50)asyncio.ensure_future(loop_wrap(urls))loop.run_forever()

上面的代码将创建一个

Future
实例每隔
1/50
一秒。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/zaji/5645276.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-16
下一篇2022-12-16

发表评论

登录后才能评论

评论列表(0条)

    保存