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

Dry-run и идемпотентность

Write-операции в SDK должны быть предсказуемыми: один и тот же пользовательский ввод строит один и тот же payload, а повторный реальный вызов можно защитить idempotency_key, если endpoint это поддерживает.

Dry-run

dry_run=True не вызывает transport. Метод валидирует аргументы, строит payload и возвращает preview-модель. Это полезно для интерфейсов подтверждения, batch-задач и consumer-тестов.

Ключевое правило: dry-run не должен строить “похожий” payload. Он обязан использовать тот же путь сериализации, что и реальный вызов. Иначе preview перестанет быть надёжной проверкой.

Идемпотентность

idempotency_key нужен для повторяемых write-вызовов: retry после сетевого сбоя, перезапуск фоновой задачи, повторное нажатие пользователем. SDK передаёт ключ в transport-layer только для реального write-вызова; dry-run не должен обращаться в сеть.

Разделение поведения

Режим Transport Payload Возврат
dry_run=True Не вызывается Строится полностью Preview/result model
dry_run=False без ключа Вызывается один раз Строится полностью Upstream result model
dry_run=False с ключом Вызывается с idempotency metadata Строится полностью Upstream result model

Практический сценарий описан в how-to по продвижению. Разрешённые overrides перечислены в reference по конфигурации.