今天看啥  ›  专栏  ›  Python编程时光

如何使用 asyncio 限制协程的并发数

Python编程时光  · 公众号  ·  · 2021-08-06 09:02
有同学问道,如果使用 asyncio + httpx 实现并发请求,怎么限制请求的频率呢?怎么限制最多只能有 x 个请求同时发出呢?我们今天给出两种方案。提出问题假设如果我们同时发起12个请求,每个请求的时间不同,那么总共的请求时间大概跟最长耗时的请求差不多。我们先来写一个用于测试的例子:import asyncioimport httpximport timeasync def req(delay):    print(f'请求一个延迟为{delay}秒的接口')    async with httpx.AsyncClient(timeout=20) as client:        resp = await client.get(f'http://127.0.0.1:8000/sleep/{delay}')        result = resp.json()        print(result)async def main():    start = time.time()    delay_list = [3, 6, 1, 8, 2, 4, 5, 2, 7, 3, 9, 8]    task_list = []    for delay in dela ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照