有同学问道,如果使用 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
………………………………