Check

Асинхронная имитация HTTP-запросов

Python Senior Яндекс 01.01.2025
Напишите асинхронную функцию `fetch_all(urls: list[str]) -> list[str]`, которая: 1. Для каждой ссылки имитирует HTTP-запрос с помощью `asyncio.sleep` (например, случайное время от 0.1 до 0.5 секунды). 2. Возвращает список строк вида `"OK: <url>"` в том же порядке, что и входные URL. Реальных HTTP-запросов делать не нужно, только имитация через sleep.
Ответы
Решение 1 (упрощённое)
```python import asyncio import random from typing import List async def _fake_fetch(url: str) -> str: await asyncio.sleep(random.uniform(0.1, 0.5)) return f"OK: {url}" async def fetch_all(urls: List[str]) -> List[str]: tasks = [asyncio.create_task(_fake_fetch(url)) for url in urls] return await asyncio.gather(*tasks) ```