Миграция 308 выключила их потому, что свип копил лоты в памяти и сохранял одним
save_listings после всех шести корзин: снятие по watchdog теряло всё собранное, а
чекпоинт при этом помечал корзины пройденными. На выдаче размером с Москву
(около 23 690 лотов вторички против 6 300 у ЕКБ) снятие было гарантировано, и
итоговый сбор равнялся нулю навсегда.
PR #3592 это снял: save_listings зовётся из колбэка on_bucket после каждой
успешной корзины, туда же переехал чекпоинт, и корзина без сохранённых строк в
него не попадает.
interval_days = 1 вместо 3: полный проход Москвы в одно окно watchdog'а
по-прежнему не помещается (замер run 7344 — 2 корзины из 6 за два часа). Добор
идёт ротацией стартовой корзины плюс skip_buckets из чекпоинта, и при суточном
такте шесть корзин закрываются примерно за трое суток против девяти при
трёхсуточном. Корпус живёт 14 суток, девять не оставляли бы запаса на пропуски
из-за QRATOR-банов.
watchdog_sec намеренно не задаётся: override в коде есть, но поднимать таймаут до
замера нечем обосновать — с инкрементальным сохранением ранний снос перестал быть
потерей, а длинный прогон дольше держит один из двух узлов affinity='any'.
Окна не меняются: Москва 0-3, область 9-12, ЕКБ 3-6 — ни одно не содержит двух
домклик-строк.
Проверено сухим прогоном на проде под ROLLBACK: UPDATE 2, обе строки enabled=t с
interval_days=1, ЕКБ-строка не затронута.
Claude-Session: https://claude.ai/code/session_01NQb6WeJtagZwZnUsSjDizs