Повтор —
не новая заявка.
Исполняемый офлайн-стенд: две страницы событий, фиктивная CRM и журнал каждой попытки. Сеть и платные API не используются.
Сценарии
- 429: учесть Retry-After и повторить.
- 503: максимум три попытки.
- Timeout после записи: повтор не создаёт вторую сущность.
- Повтор ID: пропустить; конфликт ID: в карантин.
- Устаревшее обновление не затирает новую версию.
- Неверная схема не доходит до CRM.
Результат replay
4 уникальные записи CRM, 3 события в карантине. Реальных сетевых запросов:0. L001 сохранён в версии 2 с количеством 4; timeout не создал дубль.
python3 replay.py
Входные события · Полный результат и аудит · Код
Задержки только записываются в журнал; реальное ожидание не запускается. Надёжность реального сервиса этим не доказана.