Вернуть домклик-свипы Москвы и области #3594
No reviewers
Labels
No labels
Fable 5 ревью
GG-форсайт
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
feedback/max
generative
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#3594
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/domclick-msk-reenable"
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?
Отменяет миграцию 308 (#3567) — причина выключения устранена в #3592.
Почему было выключено
Свип копил лоты в памяти и сохранял их одним
save_listingsпосле всех шести корзин. Снятие по watchdog теряло всё собранное, а чекпоинт при этом помечал корзины пройденными, и следующий прогон пропускал их черезskip_buckets. На выдаче размером с Москву (≈23 690 лотов вторички против ≈6 300 у ЕКБ) снятие было гарантировано — итоговый сбор равнялся нулю навсегда.Почему можно возвращать
#3592:
save_listingsзовётся из колбэкаon_bucketсразу после каждой успешной корзины, туда же переехал чекпоинт.done_bucketsтеперь означает «собрано и сохранено», корзина без сохранённых строк в него не попадает, а снятие по watchdog больше не теряет собранное. Тем же колбэком добавлена кооперативная отмена по корзинам.interval_days: 1вместо3Полный проход Москвы в одно окно watchdog'а по-прежнему не помещается — замер run 7344: 2 корзины из 6 за два часа. Добор идёт ротацией стартовой корзины (
start_bucket_index = run_id % 6) плюсskip_bucketsиз чекпоинта: каждый прогон берёт корзины, которых ещё нет вdone_buckets.При суточном такте шесть корзин закрываются примерно за трое суток, при трёхсуточном — за девять. Корпус живёт 14 суток (
LISTINGS_FRESH_DAYS), и девять на полный оборот не оставляли бы запаса на пропуски из-за QRATOR-банов.watchdog_secнамеренно не задаётсяOverride в коде есть (#3592, читается из
default_paramsобоими хендлерами), но поднимать таймаут до замера нечем обосновать: с инкрементальным сохранением ранний снос перестал быть потерей, а более длинный прогон дольше держит один из двух узловprovider_affinity='any'(id 13 и 14), за которые конкурирует cian. Сначала смотрим реальный выход за прогон, потом решаем про таймаут.Окна
Не меняются: Москва 0-3, область 9-12 (разведены миграцией 307 / #3546), ЕКБ 3-6. Ни одно окно не содержит двух домклик-строк — за нарушение этого условия 17.09 ЕКБ-свип run 7339 отбился
bannedза 0 секунд.Чекпоинт прогонов 7333/7344 сбрасывать не нужно: у обоих
buckets_completedпуст, они были задрейнены деплоем ещё до первой завершённой корзины.Проверка
Сухой прогон на проде под
BEGIN … ROLLBACK:ЕКБ-строка не затронута.
tests/test_migration_numbering.py→ 1 passed, 2 skipped.Мержить только после того, как #3592 доехал до прода — иначе строки включатся на коде без инкрементального сохранения и снова соберут ноль.
🤖 Generated with Claude Code
https://claude.ai/code/session_01NQb6WeJtagZwZnUsSjDizs