Sobes.tech
Назад к вопросам
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 запросов будут выполняться одновременно, остальные будут ждать освобождения семафора.