feat(tradein): отдельный scraper-контейнер — scheduler вне API-процесса #1183
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#1183
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/tradein-scraper-container"
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?
Summary
tradein-mvp/backend/app/scheduler_main.py(python -m app.scheduler_main): sentry-init без FastAPI-integrations, best-effort FDW bootstrap, SIGTERM/SIGINT → clean cancelscheduler_loop, уважаетSCHEDULER_ENABLE(единый kill-switch). Zombie-reap не дублируется — он уже в начале каждого тикаscheduler_loop(reap_zombies, scheduler.py:976).docker-compose.prod.yml(tradein): новый сервисscraper(containertradein-scraper, тот же backend-image, сетьtradein-net, env-зеркало backend +SCHEDULER_ENABLE=true); в API-контейнереSCHEDULER_ENABLE=false— после деплоя ровно один scheduler.deploy-tradein.yml: новый paths-filter outputscraper+ селективныйup -d --no-deps postgres browser backend frontend;tradein-scraperпересоздаётся ТОЛЬКО при изменении scraper-путей/infra (SCRAPER_CHANGED, default-safetrue). Иначе блочныйup -dрестартовал бы scraper на каждом backend-деплое (общий:latestimage) — ровно та боль, которую чиним.test_scheduler_main.py(4): import, kill-switch выходит без запуска loop, clean cancellation.Pre-push review: ⚠️ MINOR → мёртвый monkeypatch убран fixup-коммитом; GIT_SHA/SENTRY_RELEASE gap и browser healthcheck — не-регрессии (то же у backend), отмечены как follow-up.
Test plan
pytest tests/test_scheduler_main.py— 4 passedtradein-scraper; лог backend «in-app scheduler disabled»; лог scraper «scheduler task spawned»docker psuptime tradein-scraper не сбрасываетсяRefs #1182