diff --git a/tradein-mvp/backend/app/services/cian_price_history.py b/tradein-mvp/backend/app/services/cian_price_history.py index 21146957..b0ba6c4c 100644 --- a/tradein-mvp/backend/app/services/cian_price_history.py +++ b/tradein-mvp/backend/app/services/cian_price_history.py @@ -131,7 +131,7 @@ async def backfill_cian_price_history( # Fail-closed (#2616): пул пуст/недоступен в проде. Остальные листинги # упрутся в то же самое — рвём батч сразу, а не 50 раз по 5 секунд с # логом, который читается как «Циан нас блокирует». - logger.error( + logger.warning( "cian_price_history: нет доступного прокси в пуле (%s) — батч прерван " "на listing_id=%s (обработано %d из %d)", exc, diff --git a/tradein-mvp/backend/app/services/cian_session.py b/tradein-mvp/backend/app/services/cian_session.py index 388d94fb..25d240d1 100644 --- a/tradein-mvp/backend/app/services/cian_session.py +++ b/tradein-mvp/backend/app/services/cian_session.py @@ -201,7 +201,7 @@ async def verify_session(cookies: dict[str, str]) -> dict[str, Any] | None: # ИМЕННО для cian/нездоровы — НЕ уходим на settings.cian_proxy_url (тот самый # статичный узел мог быть источником бана, см. proxy_egress module docstring). # Явный отказ вместо слепого прохода через заведомо подозрительный egress. - logger.error( + logger.warning( "Cian cookies verify: пул прокси исчерпан для cian (%s) — verify пропущен, " "cookies НЕ помечены протухшими, retry на следующем такте", exc, diff --git a/tradein-mvp/backend/app/services/proxy_egress.py b/tradein-mvp/backend/app/services/proxy_egress.py index 8227a40a..12880ea7 100644 --- a/tradein-mvp/backend/app/services/proxy_egress.py +++ b/tradein-mvp/backend/app/services/proxy_egress.py @@ -302,7 +302,7 @@ def resolve_proxy_url(db: Session, source: str) -> str | None: # Сценарий 2: пул РЕАЛЬНО не пуст, но для source не осталось ни одного # здорового/небаненного узла -- fail-closed (#2616), НЕ fallback на env. - logger.error( + logger.warning( "proxy_egress: source=%s -- пул scrape_proxies НЕ пуст (%d узлов), но НИ ОДИН " "не прошёл фильтр для этого источника (banned_for_source=%d, " "unhealthy_or_disabled=%d) -- FAIL-CLOSED (#2616): отказ, БЕЗ обхода через " diff --git a/tradein-mvp/backend/app/services/yandex_address_backfill.py b/tradein-mvp/backend/app/services/yandex_address_backfill.py index 059d3dc2..b5831676 100644 --- a/tradein-mvp/backend/app/services/yandex_address_backfill.py +++ b/tradein-mvp/backend/app/services/yandex_address_backfill.py @@ -141,7 +141,7 @@ async def backfill_yandex_addresses( # нездоровы — НЕ уходим на settings.scraper_proxy_url (см. proxy_egress module # docstring). Явный пропуск run'а вместо слепого прохода через egress, который # мог быть источником текущего инцидента. - logger.error( + logger.warning( "yandex_address_backfill: пул прокси исчерпан для yandex (%s) — run " "пропущен, ни один листинг не обработан", exc, diff --git a/tradein-mvp/backend/app/tasks/avito_detail_backfill.py b/tradein-mvp/backend/app/tasks/avito_detail_backfill.py index 72f4ab24..dcbe755a 100644 --- a/tradein-mvp/backend/app/tasks/avito_detail_backfill.py +++ b/tradein-mvp/backend/app/tasks/avito_detail_backfill.py @@ -806,7 +806,7 @@ async def run_avito_detail_backfill( # и mark_failed с текстом про пул, как у домклика после #3283. if _caused_by_empty_pool(e): counters.failed += 1 - logger.error( + logger.warning( "avito_detail_backfill: run_id=%d СТОП — пул прокси пуст, " "к площадке не ходили. enriched=%d attempted=%d", run_id, @@ -913,7 +913,7 @@ async def run_avito_detail_backfill( # ratio: прогон 5210 (14 блоков из 20, ровно порог) отпечатал # "ABORT -- 1 consecutive blocks" -- текущая серия в тот момент # действительно равнялась единице, но обрыв был не по ней. - logger.error( + logger.warning( "avito_detail_backfill: run_id=%d ABORT -- %s, " "частая причина: %s. enriched=%d attempted=%d", run_id, diff --git a/tradein-mvp/backend/app/tasks/cian_history_backfill.py b/tradein-mvp/backend/app/tasks/cian_history_backfill.py index 9b1299ec..3de9d816 100644 --- a/tradein-mvp/backend/app/tasks/cian_history_backfill.py +++ b/tradein-mvp/backend/app/tasks/cian_history_backfill.py @@ -256,7 +256,7 @@ async def backfill_cian_history( if caused_by_no_proxy(exc): result.no_proxy_stop = True result.listings_failed_fetch += 1 - logger.error( + logger.warning( "cian_history_backfill: СТОП — пул прокси пуст, к площадке " "не ходили. listing_id=%s processed=%d succeeded=%d", listing_id, diff --git a/tradein-mvp/backend/app/tasks/domclick_detail_backfill.py b/tradein-mvp/backend/app/tasks/domclick_detail_backfill.py index 5f4c6963..d2f96a5c 100644 --- a/tradein-mvp/backend/app/tasks/domclick_detail_backfill.py +++ b/tradein-mvp/backend/app/tasks/domclick_detail_backfill.py @@ -493,7 +493,7 @@ async def run_domclick_detail_backfill( # ниже. Причина не теряется: в записи прогона стоит # no_proxy_stop=1 и mark_failed с текстом про пул. counters.failed += 1 - logger.error( + logger.warning( "domclick_detail_backfill: run_id=%d СТОП — пул прокси пуст, " "к площадке не ходили. enriched=%d attempted=%d", run_id, @@ -572,7 +572,7 @@ async def run_domclick_detail_backfill( if consecutive_blocks >= max_consecutive_blocks: # #3196: причину больше не выдумываем и не молчим — печатаем # перепись диагнозов по HTTP-статусам этого прогона. - logger.error( + logger.warning( "domclick_detail_backfill: run_id=%d ABORT -- %d consecutive " "blocks, диагнозы: %s. enriched=%d attempted=%d", run_id, diff --git a/tradein-mvp/backend/app/tasks/yandex_detail_backfill.py b/tradein-mvp/backend/app/tasks/yandex_detail_backfill.py index 31e7cad7..6377ef5e 100644 --- a/tradein-mvp/backend/app/tasks/yandex_detail_backfill.py +++ b/tradein-mvp/backend/app/tasks/yandex_detail_backfill.py @@ -427,7 +427,7 @@ async def run_yandex_detail_backfill( ) if consecutive_blocks >= max_consecutive_blocks: aborted_by_blocks = True - logger.error( + logger.warning( "yandex_detail_backfill: run_id=%d ABORT -- %d consecutive " "non-200 responses. enriched=%d attempted=%d", run_id, diff --git a/tradein-mvp/backend/app/tasks/yandex_newbuilding_sweep.py b/tradein-mvp/backend/app/tasks/yandex_newbuilding_sweep.py index 0733798d..c4b11b89 100644 --- a/tradein-mvp/backend/app/tasks/yandex_newbuilding_sweep.py +++ b/tradein-mvp/backend/app/tasks/yandex_newbuilding_sweep.py @@ -354,7 +354,7 @@ async def enrich_yandex_newbuilding_sweep( if caused_by_no_proxy(exc): result.no_proxy_stop = True result.failed_resolve += 1 - logger.error( + logger.warning( "yandex-nb-sweep: СТОП — пул прокси пуст, к площадке не ходили. " "house_id=%s processed=%d succeeded=%d", house_id, @@ -419,7 +419,7 @@ async def enrich_yandex_newbuilding_sweep( if caused_by_no_proxy(exc): # #3197 — см. блок resolve выше result.no_proxy_stop = True result.failed_fetch += 1 - logger.error( + logger.warning( "yandex-nb-sweep: СТОП — пул прокси пуст, к площадке не ходили. " "house_id=%s processed=%d succeeded=%d", house_id,