/
urusai
/
code_sample
Обзор
Документация
Войти
/
urusai
/
code_sample
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/services/http_client/client.py
38 строк
960 B
nick
linters
30 сен 2024, 16:13
30 сен 2024, 16:13
09a0f4a
Код
Авторство
О чём код?
import io import re import logging from typing import Any, Dict, Tuple, Optional import aiohttp import async_timeout logger = logging.getLogger(__name__) class FailedDecodeJson(Exception): pass class HTTPClientDependencyMarker: pass class HTTPClient: async def request( self, method: str, url: str, headers: Optional[Dict[str, Any]] = None, delay: int = 60, **kwargs, ) -> Tuple[Dict[str, Any], int] | Tuple[io.BytesIO, int]: if not headers: headers = {} url = re.sub(r"(https?:\/\/)|(\/){2,}", "\\1\\2", url) logger.info(msg=f"Отправляем запрос на {url}") async with async_timeout.timeout(delay=delay): async with aiohttp.ClientSession(headers=headers) as session: async with session.request(method=method, url=url, **kwargs) as resp: return await self.handle_response(resp)