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: ...Аргументы
files: Files, обязательный. Служба файлов текущего приложения.filename: str, обязательный. Подпись файла до 255 байт UTF-8 без управляющих символов. None сохраняет исходное имя только у File.copy().size: int, обязательный. Точный неотрицательный размер файла в байтах; резервируется при open(), проверяется при finish().sha256: str | None, по умолчаниюNone. Ожидаемая SHA256 содержимого: 64 шестнадцатеричных символа. None не задаёт ожидаемый хеш.ttl: int | None, по умолчаниюNone. Срок хранения в секундах 1..315360000; None без срока. У Record.save() пропуск отличается от None и сохраняет прежний срок.
Результат
None. Создаёт Writer. Обычный способ получения объекта показан выше; прямой конструктор не выполняет сетевые запросы.
Права
Не требует прав: операция выполняется локально и сама не обращается к ядру. Права понадобятся при отправке, сохранении или чтении через службу.
Ошибки
- Отдельного исключения SDK нет. Действуют обычные ошибки типов Python и ошибки переданных функций, если они используются.
Пример
# Обычный способ получения объекта:
writer = app.files.writer("note.txt", 5)open
Создаёт незавершённый файл один раз. Повторное открытие или открытие закрытого потока запрещено.
async def open() -> Self: ...Аргументы
Нет.
Результат
Self. Тот же объект после успешной операции. Создаёт незавершённый файл один раз. Повторное открытие или открытие закрытого потока запрещено.
Права
Нужны files.write. Для чужих файлов своего юзербота дополнительно files.full либо отдельное разрешение конфигурационного файла на чтение.
Ошибки
ValueError('The upload has already been opened'): условие проверяется до продолжения операции.- Ошибки ядра: AccessDenied при нехватке прав или выходе за ограничения, InvalidInput для неверных параметров, InvalidState для недоступного состояния, QuotaExceeded при превышении лимита, Unavailable при недоступной службе. Остальные коды представлены SDKError; см. TYPES.md. Ошибка канала связи вызывает RuntimeError. Действие с неизвестным результатом нельзя автоматически считать невыполненным.
Пример
result = await writer.open()write
Записывает bytes частями до 64 KiB, последовательно увеличивая смещение. Превышение объявленного размера запрещено.
async def write(data: JSON) -> Self: ...Аргументы
data: JSON, обязательный. Данные выбранной операции. Форма и ограничения описаны ниже; передаваемые JSON-значения копируются.
Результат
Self. Тот же объект после успешной операции. Записывает bytes частями до 64 KiB, последовательно увеличивая смещение. Превышение объявленного размера запрещено.
Права
Нужны files.write. Для чужих файлов своего юзербота дополнительно files.full либо отдельное разрешение конфигурационного файла на чтение.
Ошибки
ValueError('The upload is not active'): условие проверяется до продолжения операции.TypeError('Bytes are required'): условие проверяется до продолжения операции.ValueError('The upload exceeds the declared size'): условие проверяется до продолжения операции.- Ошибки ядра: AccessDenied при нехватке прав или выходе за ограничения, InvalidInput для неверных параметров, InvalidState для недоступного состояния, QuotaExceeded при превышении лимита, Unavailable при недоступной службе. Остальные коды представлены SDKError; см. TYPES.md. Ошибка канала связи вызывает RuntimeError. Действие с неизвестным результатом нельзя автоматически считать невыполненным.
Пример
await writer.write(b"Hello")finish
Завершает загрузку, проверяет размер и SHA256 в ядре, возвращает готовый файл и закрывает поток.
async def finish() -> File: ...Аргументы
Нет.
Результат
File. Завершает загрузку, проверяет размер и SHA256 в ядре, возвращает готовый файл и закрывает поток.
Права
Нужны files.write. Для чужих файлов своего юзербота дополнительно files.full либо отдельное разрешение конфигурационного файла на чтение.
Ошибки
ValueError('The upload is not active'): условие проверяется до продолжения операции.- Ошибки ядра: AccessDenied при нехватке прав или выходе за ограничения, InvalidInput для неверных параметров, InvalidState для недоступного состояния, QuotaExceeded при превышении лимита, Unavailable при недоступной службе. Остальные коды представлены SDKError; см. TYPES.md. Ошибка канала связи вызывает RuntimeError. Действие с неизвестным результатом нельзя автоматически считать невыполненным.
Пример
result = await writer.finish()abort
Удаляет незавершённый файл, если он был открыт, и закрывает поток. Для завершённого потока ничего не удаляет.
async def abort() -> None: ...Аргументы
Нет.
Результат
None. Удаляет незавершённый файл, если он был открыт, и закрывает поток. Для завершённого потока ничего не удаляет.
Права
Нужны files.write. Для чужих файлов своего юзербота дополнительно files.full либо отдельное разрешение конфигурационного файла на чтение.
Ошибки
- Ошибки ядра: AccessDenied при нехватке прав или выходе за ограничения, InvalidInput для неверных параметров, InvalidState для недоступного состояния, QuotaExceeded при превышении лимита, Unavailable при недоступной службе. Остальные коды представлены SDKError; см. TYPES.md. Ошибка канала связи вызывает RuntimeError. Действие с неизвестным результатом нельзя автоматически считать невыполненным.
Пример
result = await writer.abort()__aenter__
Вход в async with. Открывает поток загрузки.
async def __aenter__() -> Self: ...Аргументы
Нет.
Результат
Self. Тот же объект после успешной операции. Вход в async with. Открывает поток загрузки.
Права
Нужны files.write. Для чужих файлов своего юзербота дополнительно files.full либо отдельное разрешение конфигурационного файла на чтение.
Ошибки
- Ошибки ядра: AccessDenied при нехватке прав или выходе за ограничения, InvalidInput для неверных параметров, InvalidState для недоступного состояния, QuotaExceeded при превышении лимита, Unavailable при недоступной службе. Остальные коды представлены SDKError; см. TYPES.md. Ошибка канала связи вызывает RuntimeError. Действие с неизвестным результатом нельзя автоматически считать невыполненным.
Пример
async with writer as active:
pass__aexit__
Выход из async with. При успехе завершает загрузку; при ошибке удаляет незавершённый файл. Исключения блока не подавляются.
async def __aexit__(kind: type[BaseException] | None, error: BaseException | None, traceback: TracebackType | None) -> None: ...Аргументы
kind: type[BaseException] | None, обязательный. Тип исключения блока либо None. Передаётся Python автоматически.error: BaseException | None, обязательный. Исключение блока async with либо None; контекстный протокол передаёт автоматически.traceback: TracebackType | None, обязательный. Трассировка исключения контекстного блока; передаётся Python автоматически.
Результат
None. Выход из async with. При успехе завершает загрузку; при ошибке удаляет незавершённый файл. Исключения блока не подавляются.
Права
Нужны files.write. Для чужих файлов своего юзербота дополнительно files.full либо отдельное разрешение конфигурационного файла на чтение.
Ошибки
- Ошибки ядра: AccessDenied при нехватке прав или выходе за ограничения, InvalidInput для неверных параметров, InvalidState для недоступного состояния, QuotaExceeded при превышении лимита, Unavailable при недоступной службе. Остальные коды представлены SDKError; см. TYPES.md. Ошибка канала связи вызывает RuntimeError. Действие с неизвестным результатом нельзя автоматически считать невыполненным.
Пример
async with writer as active:
pass