Доступные реализации сессий
Вы можете выбрать, какая HTTP библиотека будет использоваться в Client
и AsyncClient
, указав параметр session
. Ниже вы можете найти список реализаций сессий, поставляемых вместе с библиотекой.
Вы также можете сделать собственную реализацию Session
/AsyncSession
. Для конкретного примера, см. исходный код любой из существующих реализаций (например, HTTPXSession
).
Синхронные реализации
- class yadisk.sessions.requests_session.RequestsSession(*args, **kwargs)[исходный код]
Базовые классы:
Session
Реализация
Session
с помощью библиотеки requests.Все аргументы, переданные конструкторе напрямую передаются в
requests.Session
.- Переменные:
requests_session – лежащий в основе объект
requests.Session
Примечание
Внутри данный класс создаёт локальные для потоков экземпляры
requests.Session
, т.к. на данный момент нет гарантии их потокобезопасности. ВызовSession.close()
закрывает все сессии, управляемые данным объектом.Для того чтобы передать специфичные для requests аргументы из
Client
используйте keyword-аргументrequests_args
.Пример использования:
import yadisk with yadisk.Client(..., session="requests") as client: client.get_meta( "/my_file.txt", n_retries=5, requests_args={ "proxies": {"https": "http://example.com:1234"}, "verify": False } )
- class yadisk.sessions.httpx_session.HTTPXSession(*args, **kwargs)[исходный код]
Базовые классы:
Session
Реализация
Session
с помощью библиотеки httpx.Все аргументы, переданные конструкторе напрямую передаются в httpx.Client.
- Переменные:
httpx_client – лежащий в основе объект httpx.Client
Для того чтобы передать специфичные для httpx аргументы из
Client
используйте keyword-аргументhttpx_args
.Пример использования:
import yadisk with yadisk.Client(..., session="httpx") as client: client.get_meta( "/my_file.txt", n_retries=5, httpx_args={ "proxies":"http://localhost:11234", "verify": False, "max_redirects": 10 } )
- class yadisk.sessions.pycurl_session.PycURLSession[исходный код]
Базовые классы:
Session
Реализация
Session
с помощью библиотеки pycurl.Для того чтобы передать специфичные для pycurl аргументы из
Client
используйте keyword-аргументcurl_options
.Пример использования:
import yadisk import pycurl with yadisk.Client(..., session="pycurl") as client: client.get_meta( "/my_file.txt", n_retries=5, curl_options={ pycurl.MAX_SEND_SPEED_LARGE: 5 * 1024**2, pycurl.MAX_RECV_SPEED_LARGE: 5 * 1024**2, pycurl.PROXY: "http://localhost:12345", pycurl.MAXREDIRS: 15 } )
Асинхронные реализации
- class yadisk.sessions.aiohttp_session.AIOHTTPSession(*args, **kwargs)[исходный код]
Базовые классы:
AsyncSession
Реализация
AsyncSession
с помощью библиотеки aiohttp.Все аргументы, переданные конструкторе напрямую передаются в
aiohttp.ClientSession
.- Переменные:
aiohttp_session – лежащий в основе объект
aiohttp.ClientSession
Для того чтобы передать специфичные для aiohttp аргументы из
Client
используйте keyword-аргументaiohttp_args
.Пример использования:
import yadisk async def main(): async with yadisk.AsyncClient(..., session="aiohttp") as client: await client.get_meta( "/my_file.txt", n_retries=5, aiohttp_args={ "proxies": {"https": "http://example.com:1234"}, "verify": False } )
- class yadisk.sessions.async_httpx_session.AsyncHTTPXSession(*args, **kwargs)[исходный код]
Базовые классы:
AsyncSession
Реализация
AsyncSession
с помощью библиотеки httpx.Все аргументы, переданные конструкторе напрямую передаются в httpx.AsyncClient.
- Переменные:
httpx_client – лежащий в основе объект httpx.AsyncClient
Для того чтобы передать специфичные для httpx аргументы из
AsyncClient
используйте keyword-аргументhttpx_args
.Пример использования:
import yadisk async def main(): async with yadisk.AsyncClient(..., session="httpx") as client: await client.get_meta( "/my_file.txt", n_retries=5, httpx_args={ "proxies":"http://localhost:11234", "verify": False, "max_redirects": 10 } )
Импортирование классов сессий
Вы можете использовать следующие функции, чтобы импортировать класс сессии по именsи:
- yadisk.import_session(name: SessionName) Type[Session] [исходный код]
Импортирует релевантный класс сессии на основе указанного имени.
Доступны следующие сессии:
"httpx"
-HTTPXSession
"pycurl"
-PycURLSession
"requests"
-RequestsSession
- Параметры:
name – str, имя сессии
- Исключение:
ImportError – не удалось импортировать модуль
ValueError – неизвестное имя
- Результат:
класс, наследующийся от
Session
- yadisk.import_async_session(name: AsyncSessionName) Type[AsyncSession] [исходный код]
Импортирует релевантный класс асинхронной сессии на основе указанного имени.
- Параметры:
name – str, имя сессии
Доступны следующие сессии:
"aiohttp"
-AIOHTTPSession
"httpx"
-AsyncHTTPXSession
- Исключение:
ImportError – не удалось импортировать модуль
ValueError – неизвестное имя
- Результат:
класс, наследующийся от
AsyncSession