stability and vps runtime updates
This commit is contained in:
53
README.md
53
README.md
@@ -124,10 +124,22 @@ docker compose ps
|
||||
- `worker` имеет healthcheck через `celery inspect ping`
|
||||
- `beat` имеет healthcheck по файлу `celerybeat-schedule`
|
||||
|
||||
### Автовосстановление worker/beat на VPS
|
||||
|
||||
Чтобы `worker` и `beat` поднимались автоматически после падения, в проект добавлен `ensure_services.sh`.
|
||||
Скрипты `deploy_vps.sh` и `setup_vps.sh` устанавливают systemd-таймер `iaai-selfheal.timer`,
|
||||
который выполняет проверку каждую минуту и при необходимости делает `docker compose up -d worker beat`.
|
||||
|
||||
Проверка статуса на VPS:
|
||||
|
||||
```bash
|
||||
systemctl status iaai-selfheal.timer
|
||||
docker compose ps
|
||||
```
|
||||
|
||||
## API
|
||||
|
||||
**Статистика:**
|
||||
**Здоровье и статистика:**
|
||||
- `GET /health` — статус сервиса и подключения к БД
|
||||
- `GET /api/v1/stats` — сколько машин и картинок в базе, топ брендов
|
||||
|
||||
@@ -243,6 +255,11 @@ pytest -q
|
||||
|
||||
## `pyproject.toml` + `uv.lock`
|
||||
|
||||
Проект переведён на современную схему зависимостей:
|
||||
|
||||
- `pyproject.toml` — декларация зависимостей и метаданных проекта
|
||||
- `uv.lock` — зафиксированные версии для воспроизводимых установок
|
||||
|
||||
Локально можно использовать:
|
||||
|
||||
```bash
|
||||
@@ -250,6 +267,40 @@ uv sync
|
||||
uv run pytest -q
|
||||
```
|
||||
|
||||
### Soak / resilience (24h / 72h)
|
||||
|
||||
Для длительного мониторинга отказоустойчивости и проверки recovery на пустых страницах:
|
||||
|
||||
```bash
|
||||
python scripts/soak_resilience_check.py --duration-hours 24 --poll-seconds 120 --inject-empty-page-tests --report-file artifacts/json/soak_24h.json
|
||||
python scripts/soak_resilience_check.py --duration-hours 72 --poll-seconds 180 --inject-empty-page-tests --report-file artifacts/json/soak_72h.json
|
||||
```
|
||||
|
||||
Удобный контроллер для Docker-воркеров (старт/статус/стоп 24h+72h):
|
||||
|
||||
```bash
|
||||
python scripts/soak_control.py start
|
||||
python scripts/soak_control.py status
|
||||
python scripts/soak_control.py stop
|
||||
```
|
||||
|
||||
`status` показывает:
|
||||
- жив ли процесс `soak_resilience_check.py`
|
||||
- куда пишется лог (`soak_24h.log` / `soak_72h.log`)
|
||||
- есть ли промежуточный/финальный JSON-отчёт (`soak_24h.json` / `soak_72h.json`)
|
||||
|
||||
Скрипт:
|
||||
|
||||
- периодически проверяет `/health` и `/api/v1/sync-runs`
|
||||
- фиксирует признаки стагнации прогресса
|
||||
- периодически отправляет synthetic-запрос `sync-listing` с несуществующим `make`
|
||||
(эмуляция пустых страниц и проверка, что пайплайн не умирает)
|
||||
- сохраняет итоговый JSON-отчёт в `artifacts/json/`
|
||||
|
||||
## Runtime-фильтры
|
||||
|
||||
Файл `runtime_config.json` управляет runtime-поведением sync и фильтрацией автомобилей.
|
||||
|
||||
### Секция `sync`
|
||||
|
||||
Поддерживаются поля:
|
||||
|
||||
Reference in New Issue
Block a user