fix(tradein/avito): серия отказов обрывается и называет причину, а не выедает бюджет (#2674) #2739

Merged
bot-backend merged 1 commit from fix/avito-backfill-failure-breaker into main 2026-08-06 15:29:49 +00:00

1 commit

Author SHA1 Message Date
75f2f62a38 fix(tradein/avito): серия отказов обрывается и называет причину, а не выедает бюджет (#2674)
All checks were successful
CI / frontend-tests (pull_request) Has been skipped
CI Trade-In / changes (pull_request) Successful in 7s
CI / changes (pull_request) Successful in 7s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 3m10s
Прогоны avito_detail_backfill 3-5 августа: attempted≈1600, failed≈1600,
blocked=0, enriched=0, полные 9000 с бюджета и 1600 запросов через единственный
прокси — каждую ночь. Брейкер у задачи был только на блоки; отказы, не
распознанные как блок, не обрывали ничего.

Хуже, что причина этих 1600 отказов невосстановима: поштучно они логируются
WARNING, в GlitchTip уезжают только ERROR, а логи контейнера пропадают на первом
же деплое (проверено: контейнер пересоздан в 12:57, прогоны 11:05 и 12:40 уже
без логов). Разница между «площадка блокирует» и «не поднялся наш прокси-тракт»
— разные владельцы задачи (#2686, #2698), и она обязана переживать перезапуск
контейнера.

Поэтому:
- max_consecutive_failures (по умолчанию 25) обрывает серию отказов без единого
  успеха. Порог выше блочного намеренно: пачка мёртвых карточек (404 → ValueError
  в curl-режиме) не должна ронять здоровый прогон;
- задача ведёт перепись причин (тип исключения + текст без URL) и отдаёт самую
  частую с её долей в текст статуса прогона — mark_backfill_finished(fail_hint=).
  Прогон 3306 сегодня сказал бы не «blocked=5», а какой именно блок и чей.

Счётчик серии обнуляют и успех, и честный 404 площадки: он доказывает, что тракт
цел (блочного брейкера 404 по-прежнему не касается, #2034).
2026-08-06 20:16:46 +05:00