Назад к вопросам
СБЕР
Middle
2
Как ограничить параллелизм при 10 запросах к API, которое принимает максимум 3 одновременных запроса?
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
Чтобы ограничить параллелизм до 3 одновременных запросов при выполнении 10 запросов к API, можно использовать семафор из модуля asyncio в Python. Семафор позволяет ограничить количество одновременно выполняющихся корутин.
Пример с использованием asyncio и семафора:
import asyncio
import aiohttp
async def fetch(session, url, semaphore):
async with semaphore: # ограничиваем параллелизм
async with session.get(url) as response:
return await response.text()
async def main():
urls = ["http://example.com/api/data" for _ in range(10)]
semaphore = asyncio.Semaphore(3) # максимум 3 одновременных запроса
async with aiohttp.ClientSession() as session:
tasks = [fetch(session, url, semaphore) for url in urls]
results = await asyncio.gather(*tasks)
print(results)
asyncio.run(main())
Таким образом, не более 3 запросов будут выполняться одновременно, остальные будут ждать освобождения семафора.