+7 7172 97 21 09
Техническая поддержка
+7 7172 97 21 09 (вн. 2) support@multitrack.kz
Перезвоните мне
г. Астана, ул. Шыганак 1, Н.П. 1
КОНТРОЛЬ ТЕХНИКИ
СЕРЕБРЯННЫЙ ДИЛЕР В КАЗАХСТАНЕ

Почему клиенту дважды пришёл один и тот же отчёт: ловушка расписания

Интеграции · 7 октября 2026 · Контроль Техники

Ошибки в рассылках редко видны сразу. Клиент просто получил два одинаковых отчёта, и мы узнали об этом потому, что проверили журнал запусков.

Мы рассылаем клиентам отчёты по расписанию на планировщике заданий (Airflow). Понедельничная рассылка шла в 10:20. Мы перенесли её на 10:30. И получили двойную рассылку.

Что произошло

Три отчёта разослались в 10:17, в момент сохранения нового расписания, и собирались разослаться второй раз в 10:30. Планировщик, увидев изменённое расписание, решил, что пропущен прошедший слот (10:20) и немедленно выполнил его. А затем, как положено, выполнил следующий слот по новому времени.

Технически у расписания такого типа при «догоне» выбирается максимум из трёх кандидатов: предыдущий слот по календарю, следующий слот после последнего запуска и первый слот после даты старта. У только что изменённого расписания первые два оказываются в прошлом.

Почему не спасла защита от дубля

Повторный запуск переиспользует уже собранный документ, поэтому пересборки нет. Но функция отправки вызывается безусловно, поэтому сообщение клиенту уходит второй раз.

Как мы это исправили

  • Дата старта расписания теперь берётся из времени последнего изменения строки расписания, а не из жёсткой даты начала года. Слоты до последней правки не догоняются.
  • Для нового расписания дата старта ставится на следующий день, иначе первый же разбор догнал бы прошедший слот.
  • Правило при ручной правке: сначала пауза, потом правка, потом снятие с паузы.

Но и тут есть нюанс: при снятии с паузы пропущенный слот выполняется сразу. В нашем случае отчёт ушёл в 10:35 при снятии паузы. Более ранние пропуски не догоняются. Мы проверяем результат по полю «следующий запуск» в базе, а не по интерфейсу.

Чему это учит

  1. Любое изменение времени рассылки считайте рискованным действием, особенно для клиентских сообщений.
  2. Делайте отправку идемпотентной: фиксируйте факт отправки (кому, за какой период) и проверяйте его перед повтором.
  3. Проверяйте журналы после каждого изменения расписания.

Хотите надёжные рассылки отчётов? Мы поможем.


Читайте также

Все статьи блога