Асинхронная имитация 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)
```