Sobes.tech
Middle
98

Kako ograničiti paralelizam kada šaljete 10 zahteva API-ju koji prihvata najviše 3 istovremena zahteva?

Компаније где су питане
СБЕРСБЕР

Одговор од АИ

sobes.tech АИ

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