[tradein] scraper_kit: avito build_warmed_session() не выставляет config= — тихо теряет sticky-proxy на prod-default пути #2330

Closed
opened 2026-07-03 22:06:57 +00:00 by lekss361 · 0 comments
Owner

Найдено при миграции Group C (#2310, эпик #2277). Тот же класс бага, что #2322 (BrowserFetcher
без endpoint=), но другая функция и другой механизм отказа — заводится отдельным issue, не
дублируя #2322.

Баг

scraper_kit.providers.avito.detail.build_warmed_session() строит сессию через
_build_detail_session(), но не выставляет параметр config вообще — в отличие от
fetch_detail, у которой config= есть и работает штатно (см. фикс в PR по #2306/#2310 —
config=RealScraperConfig() восстанавливает proxy-поведение).

Миграция avito_detail_backfill.py's warm-batch пути на этот kit-путь тихо уронила бы sticky
proxy — а это прод-дефолт (avito_detail_backfill_use_curl=True), не редкий edge-case.
Caller-side фикса нет: сигнатура функции не выставляет config параметр, инжектить неоткуда.

Как нашли

При миграции app/tasks/avito_detail_backfill.py (issue #2310) — build_warmed_session/
_AVITO_WARM_SEARCH_URL оставлены на legacy imports намеренно, с инлайн-комментарием.
Остальная часть файла (fetch_detail, save_detail_enrichment и т.д.) успешно мигрирована на kit.

DoD

  • build_warmed_session() принимает config: ScraperConfig | None = None (или эквивалент),
    прокидывает его в _build_detail_session() аналогично тому, как fetch_detail это делает
  • Regression-тест, доказывающий что БЕЗ явного config sticky-proxy реально не работает (as
    today), а С config — работает — не просто "функция не падает"
  • После фикса — вернуться к avito_detail_backfill.py (issue #2310, уже смерджен) и
    домигрировать build_warmed_session/_AVITO_WARM_SEARCH_URL на kit

Паттерн

Третий случай подряд одного класса бага в scraper_kit providers (после #2322 и #2306's
proxy-config находки): функции с сетевым/прокси-поведением, у которых нет явного config
параметра в сигнатуре, тихо теряют это поведение при переносе с legacy (где чтение
settings.* было implicit). Стоит рассмотреть системный аудит всех scraper_kit.providers.*
функций на этот паттерн, а не находить по одному при каждой миграции (см. также #2309,
Group F — широкий рефактор providers/*, туда логично включить такой аудит).

Найдено при миграции Group C (#2310, эпик #2277). Тот же класс бага, что #2322 (BrowserFetcher без endpoint=), но другая функция и другой механизм отказа — заводится отдельным issue, не дублируя #2322. ## Баг `scraper_kit.providers.avito.detail.build_warmed_session()` строит сессию через `_build_detail_session()`, но **не выставляет параметр `config` вообще** — в отличие от `fetch_detail`, у которой `config=` есть и работает штатно (см. фикс в PR по #2306/#2310 — `config=RealScraperConfig()` восстанавливает proxy-поведение). Миграция `avito_detail_backfill.py`'s warm-batch пути на этот kit-путь тихо уронила бы sticky proxy — а это **прод-дефолт** (`avito_detail_backfill_use_curl=True`), не редкий edge-case. Caller-side фикса нет: сигнатура функции не выставляет `config` параметр, инжектить неоткуда. ## Как нашли При миграции `app/tasks/avito_detail_backfill.py` (issue #2310) — `build_warmed_session`/ `_AVITO_WARM_SEARCH_URL` оставлены на legacy imports намеренно, с инлайн-комментарием. Остальная часть файла (fetch_detail, save_detail_enrichment и т.д.) успешно мигрирована на kit. ## DoD - [ ] `build_warmed_session()` принимает `config: ScraperConfig | None = None` (или эквивалент), прокидывает его в `_build_detail_session()` аналогично тому, как `fetch_detail` это делает - [ ] Regression-тест, доказывающий что БЕЗ явного config sticky-proxy реально не работает (as today), а С config — работает — не просто "функция не падает" - [ ] После фикса — вернуться к `avito_detail_backfill.py` (issue #2310, уже смерджен) и домигрировать `build_warmed_session`/`_AVITO_WARM_SEARCH_URL` на kit ## Паттерн Третий случай подряд одного класса бага в scraper_kit providers (после #2322 и #2306's proxy-config находки): функции с сетевым/прокси-поведением, у которых нет явного `config` параметра в сигнатуре, тихо теряют это поведение при переносе с legacy (где чтение `settings.*` было implicit). Стоит рассмотреть системный аудит всех `scraper_kit.providers.*` функций на этот паттерн, а не находить по одному при каждой миграции (см. также #2309, Group F — широкий рефактор providers/*, туда логично включить такой аудит).
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#2330
No description provided.