fix scraper flow
This commit is contained in:
39
README.md
39
README.md
@@ -112,32 +112,7 @@ docker compose up -d
|
||||
|
||||
`entrypoint.sh` поднимает SOCKS5→HTTP proxy bridge (если задан `SOCKS5_PROXY_HOST`) и запускает `Xvfb` только для `worker` и CLI scraping-команд.
|
||||
|
||||
По умолчанию `beat` запускает синхронизацию **раз в 1 час** (`CELERY_BEAT_SYNC_INTERVAL_MINUTES=60`).
|
||||
|
||||
Текущая стратегия устойчива к багам пагинации IAAI:
|
||||
|
||||
- **первый запуск** делает полный bootstrap через `sitemap`;
|
||||
- если bootstrap не завершился, автоматически продолжается с чекпоинта;
|
||||
- **после первого полного прохода** каждый час выполняется проход по `sitemap`.
|
||||
По умолчанию включён режим **rolling refresh**:
|
||||
- берутся все URL из sitemap,
|
||||
- новые URL добавляются сразу,
|
||||
- исчезнувшие URL помечаются как `is_sold=true`,
|
||||
- уже записанные авто обновляются **батчами по кругу**, а не все разом.
|
||||
|
||||
Это даёт более стабильную нагрузку и снижает риск не уложиться в час.
|
||||
|
||||
Доступные режимы:
|
||||
- `IAAI_HOURLY_MODE=rolling_refresh` — рекомендуемый продовый режим;
|
||||
- `IAAI_HOURLY_MODE=full_refresh` — перепарсить все активные авто за один hourly цикл;
|
||||
- `IAAI_HOURLY_MODE=diff` — только новые авто + sold.
|
||||
|
||||
За счёт этого система:
|
||||
|
||||
- не зависит от page 39 / 70 / 100,
|
||||
- не уходит в бесконечный цикл пагинации,
|
||||
- даёт стабильный hourly refresh уже записанных авто без монолитного полного hourly прохода,
|
||||
- остаётся быстрой и устойчивой при hourly sync.
|
||||
По умолчанию `beat` запускает сбор листинга **раз в 1 час** (`CELERY_BEAT_SYNC_INTERVAL_MINUTES=60`).
|
||||
|
||||
Swagger-документация: `http://localhost:8000/docs`
|
||||
|
||||
@@ -149,9 +124,10 @@ docker compose ps
|
||||
- `worker` имеет healthcheck через `celery inspect ping`
|
||||
- `beat` имеет healthcheck по файлу `celerybeat-schedule`
|
||||
|
||||
|
||||
## API
|
||||
|
||||
**Здоровье и статистика:**
|
||||
**Статистика:**
|
||||
- `GET /health` — статус сервиса и подключения к БД
|
||||
- `GET /api/v1/stats` — сколько машин и картинок в базе, топ брендов
|
||||
|
||||
@@ -267,11 +243,6 @@ pytest -q
|
||||
|
||||
## `pyproject.toml` + `uv.lock`
|
||||
|
||||
Проект переведён на современную схему зависимостей:
|
||||
|
||||
- `pyproject.toml` — декларация зависимостей и метаданных проекта
|
||||
- `uv.lock` — зафиксированные версии для воспроизводимых установок
|
||||
|
||||
Локально можно использовать:
|
||||
|
||||
```bash
|
||||
@@ -279,10 +250,6 @@ uv sync
|
||||
uv run pytest -q
|
||||
```
|
||||
|
||||
## Runtime-фильтры
|
||||
|
||||
Файл `runtime_config.json` управляет runtime-поведением sync и фильтрацией автомобилей.
|
||||
|
||||
### Секция `sync`
|
||||
|
||||
Поддерживаются поля:
|
||||
|
||||
Reference in New Issue
Block a user