fix(tradein/yandex): инкрементальный per-combo save + bounded gate-timeout (анти-зомби city_sweep) #1845
No reviewers
Labels
No labels
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
Fable 5 ревью
feedback/max
generative
GG-форсайт
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
вторичка
ИРД
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#1845
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "fix/tradein-yandex-sweep-robustness"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Проблема (live 2026-06-20)
yandex_city_sweepфрагилен (зомбит, теряет всё при краше):Контеншн (browser sharing с avito) уже снят прежними фиксами — это собственные изъяны yandex-пути.
Фикс
A — инкрементальный per-combo save (
scrape_pipeline.py_yandex_anchor_phases,yandex_realty.fetch_around_multi_room): добавленon_combo(label, new_lots)callback →save_listings(db, new_lots)+update_heartbeatпосле каждого (segment×rooms×price) combo (зеркало avito on_bucket). Данные персистятся сразу, прогресс виден, краш не теряет собранное.B — bounded gate-timeout (
browser_fetcher.py+yandex_realty.py):BrowserFetcher(fetch_timeout_s=...)параметр (default 120 backward-compat); yandex открывает с 30с (_YANDEX_BROWSER_FETCH_TIMEOUT_S). Worst-case stuck-combo: 30×3=90с вместо 360с. Combo с исчерпанными ретраями → skip + WARNING (счётчикcombos_skipped), не зацикливается.Тесты
Эффект
yandex_city_sweep перестаёт быть all-or-nothing (партии в БД сразу) + не жжёт минуты на флаки-combo → не зомбит, наполняет yandex как источник кросс-валидации. Связано: аудит скрапперов 2026-06-20.