Почему повторная попытка платежа опасна — и одна строка, которая это исправляет.
Соединение клиента обрывается во время оформления заказа, поэтому его приложение тихо повторяет попытку списания —три раза. Ваш наивный код выполняется три раза. Клиент платит 3× за один заказ, и теперь это ваш звонок в 3 часа ночи. Эта конкретная ошибка стоила реальным компаниям реальных денег. Давайте сделаем её невозможной.
Идемпотентность: один и тот же запрос, один и тот же эффект — независимо от того, сколько раз.
Операция идемпотентный когда делаешь один раз и десять раз — приходишь к тому же результату. Хитрость: дай каждому запросу уникальный ключ, запоминай обработанные ключи и превращай повторный ключ в пустую операцию. Повторы становятся безопасными.
Вот сломанный charge(). Запусти — он спишет трижды. Затем добавь защиту, чтобы повторный ключ ничего не делал, и запусти снова. Настоящий Python, работает прямо здесь.
Зелёный означает 3 повтора → 1 списание. Ты не читал об идемпотентности — ты реализовал её, и проверка подтвердила. Так выглядит каждый урок Sage: ментальная модель, диаграмма и доказательство, которое скептик может запустить. Никаких самопроверочных тестов, никакого «кажется, я понял».
Это был один урок. Есть сотни ещё.
Каждый заканчивается таким доказательством и складывается в портфолио, которое может запустить нанимающий менеджер.