Доступные реализации сессий

Вы можете выбрать, какая 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][исходный код]

Импортирует релевантный класс сессии на основе указанного имени.

Доступны следующие сессии:

Параметры:

namestr, имя сессии

Исключение:
  • ImportError – не удалось импортировать модуль

  • ValueError – неизвестное имя

Результат:

класс, наследующийся от Session

yadisk.import_async_session(name: AsyncSessionName) Type[AsyncSession][исходный код]

Импортирует релевантный класс асинхронной сессии на основе указанного имени.

Параметры:

namestr, имя сессии

Доступны следующие сессии:

Исключение:
  • ImportError – не удалось импортировать модуль

  • ValueError – неизвестное имя

Результат:

класс, наследующийся от AsyncSession