Перейти к содержанию

Range Readers

Чтение файлов по частям: локально, по HTTP или из памяти.

Bases: RangeReader

Загрузчик файлов по HTTP с докачкой и retry.

Parameters:

Name Type Description Default
url str

URL файла.

required
session ClientSession | None

aiohttp-сессия (создаётся при None). Внимание: Если передана сессия с авторизацией (Authorization, Cookie), эти заголовки будут отправлены на указанный URL. Для публичных URL не передавайте сессию — она будет создана автоматически без чувствительных заголовков.

None
headers dict | None

Дополнительные HTTP-заголовки.

None
max_total int

Максимальный объём скачанных данных (байт). 0 → режим «только заголовки» (тело не скачивается). Бюджет тратится только на то, что запросил парсер: head, tail или слайс — каждая порция ограничена остатком.

256000
max_ratio float

Доля размера файла — относительный лимит скачивания, действует наравне с max_total: общий бюджет равен min(max_total, file_size * max_ratio) (head, tail и слайс суммарно не превышают его). 0 → режим «только заголовки» (тело не скачивается).

0.1
timeout float

Таймаут HTTP-запроса в секундах.

30
sock_connect int

Таймаут установки TCP-соединения в секундах.

5
max_retries int

Число повторных попыток при retry_on_statuses.

3
retry_on_statuses tuple[int, ...]

HTTP-статусы, при которых повторять запрос.

DEFAULT_RETRY_STATUSES
retry_backoff_factor float

Множитель задержки между попытками (1.0 → 1с, 2с, 4с).

1.0
allow_external_auth bool

Разрешить отправку авторизации на сторонние домены (по умолчанию только oneme.ru или okcdn.ru).

False

Methods:

full_file_save(file_path: str | Path, *, file_name: str | None = None) -> Path async

Сохраняет файл целиком на диск.

Использует уже полученные данные и активное соединение для докачки недостающих данных.

Bases: RangeReader

Читает локальный файл: head, tail через seek, expand.

Parameters:

Name Type Description Default
path str

Путь к локальному файлу.

required
max_total int

Максимальный объём чтения (байт). По умолчанию 20 MB.

20971520
max_ratio float

Доля размера файла — относительный лимит объёма чтения (наравне с max_total: итог — минимум из двух). По умолчанию 1.0 — файлы читаются целиком (в пределах бюджета).

1.0

Methods:

full_file_save(file_path: str | Path, *, file_name: str | None = None) -> Path async

Копирует локальный файл в указанную директорию.

Parameters:

Name Type Description Default
file_path str | Path

Директория для сохранения.

required
file_name str | None

Имя файла (по умолчанию — оригинальное имя).

None

Returns:

Type Description
Path

Абсолютный путь к сохранённому файлу.

Bases: RangeReader

Читает из bytes/BytesIO без сети.

Parameters:

Name Type Description Default
data bytes | BytesIO

Содержимое файла (bytes или BytesIO).

required
file_name str

Имя файла (для определения MIME-типа).

''
max_total int

Максимальный объём чтения (байт). По умолчанию 20 MB.

20971520
max_ratio float

Доля размера файла — относительный лимит объёма чтения (наравне с max_total: итог — минимум из двух). По умолчанию 1.0 — данные читаются целиком (в пределах бюджета).

1.0

Methods:

from_parts(head: bytes, tail: bytes, file_size: int, file_name: str = '') -> RangeBytesReader classmethod

Создаёт reader из готовых head/tail и известного размера файла.

Parameters:

Name Type Description Default
head bytes

Начало файла.

required
tail bytes

Конец файла.

required
file_size int

Полный размер файла.

required
file_name str

Имя файла (для определения MIME-типа).

''

Returns:

Type Description
RangeBytesReader

RangeBytesReader с заполненными head/tail.