Cluster · разработчикам

Writer

Поток загрузки. open() резервирует размер; finish() проверяет записанный объём и контрольную сумму.

Все методы SDK · Типы и ошибки

Получение объекта

writer = app.files.writer("note.txt", 5)

writer открыт через open() или async with; суммарная длина write() должна совпасть с объявленным size перед finish().

__init__

Создаёт Writer. Обычный способ получения объекта показан выше; прямой конструктор не выполняет сетевые запросы.

def __init__(files: Files, filename: str, size: int, sha256: str | None = None, ttl: int | None = None) -> None: ...

Аргументы

Результат

None. Создаёт Writer. Обычный способ получения объекта показан выше; прямой конструктор не выполняет сетевые запросы.

Права

Не требует прав: операция выполняется локально и сама не обращается к ядру. Права понадобятся при отправке, сохранении или чтении через службу.

Ошибки

Пример

# Обычный способ получения объекта:
writer = app.files.writer("note.txt", 5)

open

Создаёт незавершённый файл один раз. Повторное открытие или открытие закрытого потока запрещено.

async def open() -> Self: ...

Аргументы

Нет.

Результат

Self. Тот же объект после успешной операции. Создаёт незавершённый файл один раз. Повторное открытие или открытие закрытого потока запрещено.

Права

Нужны files.write. Для чужих файлов своего юзербота дополнительно files.full либо отдельное разрешение конфигурационного файла на чтение.

Ошибки

Пример

result = await writer.open()

write

Записывает bytes частями до 64 KiB, последовательно увеличивая смещение. Превышение объявленного размера запрещено.

async def write(data: JSON) -> Self: ...

Аргументы

Результат

Self. Тот же объект после успешной операции. Записывает bytes частями до 64 KiB, последовательно увеличивая смещение. Превышение объявленного размера запрещено.

Права

Нужны files.write. Для чужих файлов своего юзербота дополнительно files.full либо отдельное разрешение конфигурационного файла на чтение.

Ошибки

Пример

await writer.write(b"Hello")

finish

Завершает загрузку, проверяет размер и SHA256 в ядре, возвращает готовый файл и закрывает поток.

async def finish() -> File: ...

Аргументы

Нет.

Результат

File. Завершает загрузку, проверяет размер и SHA256 в ядре, возвращает готовый файл и закрывает поток.

Права

Нужны files.write. Для чужих файлов своего юзербота дополнительно files.full либо отдельное разрешение конфигурационного файла на чтение.

Ошибки

Пример

result = await writer.finish()

abort

Удаляет незавершённый файл, если он был открыт, и закрывает поток. Для завершённого потока ничего не удаляет.

async def abort() -> None: ...

Аргументы

Нет.

Результат

None. Удаляет незавершённый файл, если он был открыт, и закрывает поток. Для завершённого потока ничего не удаляет.

Права

Нужны files.write. Для чужих файлов своего юзербота дополнительно files.full либо отдельное разрешение конфигурационного файла на чтение.

Ошибки

Пример

result = await writer.abort()

__aenter__

Вход в async with. Открывает поток загрузки.

async def __aenter__() -> Self: ...

Аргументы

Нет.

Результат

Self. Тот же объект после успешной операции. Вход в async with. Открывает поток загрузки.

Права

Нужны files.write. Для чужих файлов своего юзербота дополнительно files.full либо отдельное разрешение конфигурационного файла на чтение.

Ошибки

Пример

async with writer as active:
    pass

__aexit__

Выход из async with. При успехе завершает загрузку; при ошибке удаляет незавершённый файл. Исключения блока не подавляются.

async def __aexit__(kind: type[BaseException] | None, error: BaseException | None, traceback: TracebackType | None) -> None: ...

Аргументы

Результат

None. Выход из async with. При успехе завершает загрузку; при ошибке удаляет незавершённый файл. Исключения блока не подавляются.

Права

Нужны files.write. Для чужих файлов своего юзербота дополнительно files.full либо отдельное разрешение конфигурационного файла на чтение.

Ошибки

Пример

async with writer as active:
    pass