Прогоны 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).