forked from FOSS/AutoShop-Djimbo
32 lines
991 B
Python
32 lines
991 B
Python
# - *- coding: utf- 8 - *-
|
|
import ssl
|
|
from typing import Optional
|
|
|
|
import aiohttp
|
|
import certifi
|
|
|
|
|
|
# Асинхронная сессия для запросов
|
|
class AsyncRequestSession:
|
|
# Создание ленивой aiohttp-сессии
|
|
def __init__(self) -> None:
|
|
self._session: Optional[aiohttp.ClientSession] = None
|
|
|
|
# Получение объекта сессии
|
|
async def get_session(self) -> aiohttp.ClientSession:
|
|
if self._session is None:
|
|
ssl_context = ssl.create_default_context(cafile=certifi.where())
|
|
timeout = aiohttp.ClientTimeout(total=15, connect=5, sock_read=10)
|
|
connector = aiohttp.TCPConnector(ssl=ssl_context)
|
|
|
|
self._session = aiohttp.ClientSession(timeout=timeout, connector=connector)
|
|
|
|
return self._session
|
|
|
|
# Закрытие сессии
|
|
async def close(self) -> None:
|
|
if self._session is None:
|
|
return None
|
|
|
|
await self._session.close()
|