Доступные реализации сессий
Вы можете выбрать, какая 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={ "proxy": "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={ "proxy": "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