LH - это универсальная библиотека для выполнения HTTP запросов с поддержкой повторных попыток и логирования.
- Поддержка GET запросов
- Поддержка скачивания файлов
- Автоматические повторные попытки при ошибках
- Прогресс-бар для скачивания
- Интеграция с LibraryLogSystem (LLS)
- Настраиваемый User-Agent
- Настраиваемые таймауты и задержки
from LH import Httpfrom LH import Httpresponse = Http.get('https://api.example.com/data')response = Http.get('https://api.example.com/data', timeout=10)data = Http.get_json('https://api.example.com/data')from LH import Httpdef progress(percent):
print(f"Загружено: {percent}%")
Http.download(
'https://example.com/file.zip',
'downloads/file.zip',
progress_callback=progress
)Http.download('https://example.com/file.zip', 'downloads/file.zip')response = Http.get(
url='https://api.example.com/data',
timeout=30,
attempts=5,
backoff=2.0
)Http.get(url, timeout=15, attempts=3, backoff=1.5)Выполняет GET запрос.
Параметры:
- url (str): URL запроса
- timeout (int): Таймаут в секундах (по умолчанию: 15)
- attempts (int): Количество попыток (по умолчанию: 3)
- backoff (float): Множитель задержки между попытками (по умолчанию: 1.5)Возвращает:
- bytes: Содержимое ответаИсключения:
- urllib.error.HTTPError: Ошибка HTTP
- urllib.error.URLError: Ошибка сетиHttp.get_json(url, timeout=15)Выполняет GET запрос и возвращает JSON.
Параметры:
- url (str): URL запроса
- timeout (int): Таймаут в секундах (по умолчанию: 15)Возвращает:
- dict/list: Парсенный JSONHttp.download(url, dest_path, progress_callback=None, timeout=15, attempts=3, backoff=1.5)Скачивает файл по URL.
Параметры:
- url (str): URL файла
- dest_path (str): Путь для сохранения
- progress_callback (callable): Функция для отслеживания прогресса (получает процент)
- timeout (int): Таймаут в секундах (по умолчанию: 15)
- attempts (int): Количество попыток (по умолчанию: 3)
- backoff (float): Множитель задержки между попытками (по умолчанию: 1.5)Библиотека автоматически логирует все запросы и ошибки через LLS:
[25.07.2026 21:59:18] [DEBUG] [client.py] [get] [25] -> Попытка 1/3 не удалась для https://api.example.com: Connection refused. Повтор через 1.5 с.
[25.07.2026 21:59:18] [INFO] [client.py] [get] [30] -> Запрос выполнен успешно