Cluster · разработчикам
Batch
Атомарная запись нескольких ключей своего раздела. Один ключ разрешено включить только один раз.
Все методы SDK · Типы и ошибки
Получение объекта
batch = app.db.batch()batch является новым непустым пакетом перед commit(); для добавления операции используй ещё не применённый пакет.
__init__
Создаёт Batch. Обычный способ получения объекта показан выше; прямой конструктор не выполняет сетевые запросы.
def __init__(db: Scope) -> None: ...Аргументы
db: Scope, обязательный. Выбранный раздел базы.
Результат
None. Создаёт Batch. Обычный способ получения объекта показан выше; прямой конструктор не выполняет сетевые запросы.
Права
Не требует прав: операция выполняется локально и сама не обращается к ядру. Права понадобятся при отправке, сохранении или чтении через службу.
Ошибки
- Отдельного исключения SDK нет. Действуют обычные ошибки типов Python и ошибки переданных функций, если они используются.
Пример
# Обычный способ получения объекта:
batch = app.db.batch()add
Добавляет операцию set или delete в пакет. Применения до commit() нет.
def add(action: str, key: str, value: JSON = missing, ttl: int | None = None, revision: str | None = None) -> Self: ...Аргументы
action: str, обязательный. Операция пакета: set или delete.key: str, обязательный. Непустой ключ записи либо постоянный ключ кнопки в указанном объекте.value: JSON, по умолчаниюmissing. JSON-значение: только поддерживаемые типы; NaN, бесконечность и произвольные объекты запрещены.ttl: int | None, по умолчаниюNone. Срок хранения в секундах 1..315360000; None без срока. У Record.save() пропуск отличается от None и сохраняет прежний срок.revision: str | None, по умолчаниюNone. Непрозрачная ревизия из последнего ответа ядра. Не вычисляй её самостоятельно; None отключает необязательную проверку только у Batch.
Результат
Self. Тот же объект после успешной операции. Добавляет операцию set или delete в пакет. Применения до commit() нет.
Права
Не требует прав: операция выполняется локально и сама не обращается к ядру. Права понадобятся при отправке, сохранении или чтении через службу.
Ошибки
ValueError('The batch has already been committed'): условие проверяется до продолжения операции.ValueError('Duplicate batch key'): условие проверяется до продолжения операции.- Conflict при несовпадении ожидаемой ревизии; InvalidInput для неверной операции. Непустой пакет применяется целиком либо не применяется.
Пример
batch.add("set", "count", 1)set
Добавляет запись значения с необязательными сроком и ожидаемой ревизией.
def set(key: str, value: JSON, ttl: int | None = None, revision: str | None = None) -> Self: ...Аргументы
key: str, обязательный. Непустой ключ записи либо постоянный ключ кнопки в указанном объекте.value: JSON, обязательный. JSON-значение: только поддерживаемые типы; NaN, бесконечность и произвольные объекты запрещены.ttl: int | None, по умолчаниюNone. Срок хранения в секундах 1..315360000; None без срока. У Record.save() пропуск отличается от None и сохраняет прежний срок.revision: str | None, по умолчаниюNone. Непрозрачная ревизия из последнего ответа ядра. Не вычисляй её самостоятельно; None отключает необязательную проверку только у Batch.
Результат
Self. Тот же объект после успешной операции. Добавляет запись значения с необязательными сроком и ожидаемой ревизией.
Права
Не требует прав: операция выполняется локально и сама не обращается к ядру. Права понадобятся при отправке, сохранении или чтении через службу.
Ошибки
- Conflict при несовпадении ожидаемой ревизии; InvalidInput для неверной операции. Непустой пакет применяется целиком либо не применяется.
Пример
batch.set("count", 1)delete
Добавляет удаление ключа с необязательной ожидаемой ревизией.
def delete(key: str, revision: str | None = None) -> Self: ...Аргументы
key: str, обязательный. Непустой ключ записи либо постоянный ключ кнопки в указанном объекте.revision: str | None, по умолчаниюNone. Непрозрачная ревизия из последнего ответа ядра. Не вычисляй её самостоятельно; None отключает необязательную проверку только у Batch.
Результат
Self. Тот же объект после успешной операции. Добавляет удаление ключа с необязательной ожидаемой ревизией.
Права
Не требует прав: операция выполняется локально и сама не обращается к ядру. Права понадобятся при отправке, сохранении или чтении через службу.
Ошибки
- Conflict при несовпадении ожидаемой ревизии; InvalidInput для неверной операции. Непустой пакет применяется целиком либо не применяется.
Пример
result = batch.delete("count")commit
Атомарно применяет непустой пакет. Повторный commit() запрещён. При конфликте ни одна операция не применяется.
async def commit() -> list[dict[str, JSON]]: ...Аргументы
Нет.
Результат
list[dict[str, JSON]]. Атомарно применяет непустой пакет. Повторный commit() запрещён. При конфликте ни одна операция не применяется.
Права
Нужны db.write. Для другого раздела своего юзербота дополнительно db.full.
Ошибки
ValueError('The batch has already been committed'): условие проверяется до продолжения операции.ValueError('The batch is empty'): условие проверяется до продолжения операции.- Ошибки ядра: AccessDenied при нехватке прав или выходе за ограничения, InvalidInput для неверных параметров, InvalidState для недоступного состояния, QuotaExceeded при превышении лимита, Unavailable при недоступной службе. Остальные коды представлены SDKError; см. TYPES.md. Ошибка канала связи вызывает RuntimeError. Действие с неизвестным результатом нельзя автоматически считать невыполненным.
- Conflict при несовпадении ожидаемой ревизии; InvalidInput для неверной операции. Непустой пакет применяется целиком либо не применяется.
Пример
result = await batch.commit()__aenter__
Вход в async with. Возвращает этот объект без дополнительной загрузки.
async def __aenter__() -> Self: ...Аргументы
Нет.
Результат
Self. Тот же объект после успешной операции. Вход в async with. Возвращает этот объект без дополнительной загрузки.
Права
Не требует прав: операция выполняется локально и сама не обращается к ядру. Права понадобятся при отправке, сохранении или чтении через службу.
Ошибки
- Conflict при несовпадении ожидаемой ревизии; InvalidInput для неверной операции. Непустой пакет применяется целиком либо не применяется.
Пример
async with batch 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. При успешном выходе применяет непустой ещё не применённый пакет. Исключения блока не подавляются.
Права
Нужны db.write при применении. Для другого раздела своего юзербота дополнительно db.full.
Ошибки
- Ошибки ядра: AccessDenied при нехватке прав или выходе за ограничения, InvalidInput для неверных параметров, InvalidState для недоступного состояния, QuotaExceeded при превышении лимита, Unavailable при недоступной службе. Остальные коды представлены SDKError; см. TYPES.md. Ошибка канала связи вызывает RuntimeError. Действие с неизвестным результатом нельзя автоматически считать невыполненным.
- Conflict при несовпадении ожидаемой ревизии; InvalidInput для неверной операции. Непустой пакет применяется целиком либо не применяется.
Пример
async with batch as active:
pass