feat(tradein/cian): у Циана не было добора карточек — только побочный эффект задачи про историю (#3284) #3285
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#3285
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/3284-cian-detail-backfill"
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?
Закрывает #3284.
Что не так
У avito, domclick и yandex есть выделенный
*_detail_backfill. У Циана его не было вообще: карточки доставались побочным эффектомcian_history_backfill— суточной задачи про историю цен, — а её выборка ключуется поoffer_price_history, не по наличию карточки.Замер на 30.08:
Циан — второй по объёму и последний по полноте. Без истории цен 19 046 объявлений при квоте
batch_size=100в сутки: 190 дней на текущий остаток, притом что Циан приносит ~4 900 объявлений за двое суток — очередь растёт примерно вдвадцатеро быстрее, чем разбирается.И отдельно: 1 697 объявлений имеют историю цен, но не имеют карточки. Раз выборка ключуется по истории, для неё они уже обработаны и не вернутся никогда.
При этом фетчер исправен. Прогоны 5154 / 5240 / 5328 — 100/100, 99/100, 100/100, остановка ровно на
batch_size, а не по блокам, бюджету или окну. Чинить нечего: не выдана мощность.Правка
Второй режим выборки и второе расписание поверх того же тела — машинерия работает, дублировать её новым модулем незачем.
listings_pending="detail"— выборка поdetail_enriched_at IS NULL, свежие первыми (ORDER BY last_seen_at DESC). Очередь заведомо длиннее батча, поэтому порядок решает, что успеем добрать, а по свежим считается оценка.ValueError, а не молчаливый откат на дефолт. Опечатка вdefault_paramsиначе дала бы прогон с нулём добранных карточек, выглядящий штатно: очередь якобы пуста.do_houses=falseу нового расписания: дома разбирает суточный сосед.Окно 0–23, как у
avito_detail_backfillиyandex_detail_backfill. Трёхчасовое здесь бессмысленно: прогон 5328 уложился в 54 минуты из трёх часов, две трети окна простаивали, а очередь росла.batch_size=400— арифметика, не вкус. Замеренный темп ~28 с на объявление; порогreap_zombies— 6 ч поheartbeat_at; бюджетного сторожа уbackfill_cian_historyнет, единственный ограничитель — размер батча. 400 × 28 с ≈ 3.1 ч проходит; 800, как у Яндекса, дало бы ≈6.2 ч и прогон убивало бы жнецом.enabled=false, какdomclick_detail_backfillв миграции 175. Причина не в куках (гейт_cian_pre_claimобщий с историей и проходит), а в нагрузке: это третий круглосуточный добор на общий пул из четырёх узлов. Включу отдельным шагом после деплоя и посмотрю на соседей.Тесты
13 проверок: ключ выборки, порядок, скоуп по источнику, неизменность прежнего режима, доезд
listings_pendingиbatch_sizeдо SQL, проводка параметров через посредника_execute_cian_backfill, регистрация обоих source и общий гейт кук.Проверено мутациями — каждая роняет свои тесты:
ORDER BYв detail-выборкеValueErrorlistings_pendingв посредникеНабор целиком —
5196 passed, 37 skipped.Чего эта правка НЕ делает
Не трогает
fetch(url)безorigin/refererво всех четырёх точках Циана (detail.py:130,serp.py:234,serp.py:359,newbuilding.py:271) — дефект №1 из #3251. На текущем режиме Циан не блокируется, так что чинить это стоит после того, как поднимется нагрузка: тогда и проверять будет на чём. Остаётся в #3284.