65 lines
3.1 KiB
Markdown
65 lines
3.1 KiB
Markdown
# Backend Акылдаш
|
||
|
||
Версия: `0.1.2`
|
||
|
||
Первая backend-область проекта — загрузка правовых документов из официального
|
||
Open Data API ЦБД Минюста Кыргызской Республики. Код расположен в
|
||
`ingestion/minjust_cbd.py`: его можно запускать как CLI сейчас и импортировать
|
||
из будущего планировщика backend без запуска отдельного процесса.
|
||
|
||
## Пробная загрузка
|
||
|
||
Из корня репозитория:
|
||
|
||
```bash
|
||
python3 backend/ingestion/minjust_cbd.py --limit 10
|
||
```
|
||
|
||
В интерактивном терминале отображаются процент, количество документов,
|
||
ошибки, скорость и примерное оставшееся время.
|
||
|
||
Полная загрузка выполняется без `--limit`. По умолчанию архив сохраняется в
|
||
`data/minjust-cbd`, который исключён из Git. Повторный запуск пропускает уже
|
||
загруженные документы; `--refresh` принудительно проверяет их заново.
|
||
Если временный идентификатор списка API истечёт во время многодневной загрузки,
|
||
скрипт пересоздаст список на текущей странице и продолжит автоматически.
|
||
|
||
В версии `0.1.0` обновление существующих документов выполняется полной проверкой
|
||
через `--refresh`. Инкрементальную проверку по `lastmod` из sitemap следует
|
||
добавить вместе с backend-планировщиком, когда будет определена частота запуска.
|
||
|
||
## Защита API
|
||
|
||
Запросы выполняются последовательно, по умолчанию не чаще одного в секунду.
|
||
Timeout одного ответа — 60 секунд, число попыток — 5, задержка между повторами
|
||
растёт экспоненциально. При HTTP 429 учитывается заголовок `Retry-After`.
|
||
Лимит действует на один процесс, поэтому одновременно следует запускать только
|
||
один экземпляр загрузчика.
|
||
|
||
Более осторожный режим:
|
||
|
||
```bash
|
||
python3 backend/ingestion/minjust_cbd.py --requests-per-second 0.5
|
||
```
|
||
|
||
## Вызов из будущего backend
|
||
|
||
```python
|
||
from ingestion.minjust_cbd import sync_archive
|
||
|
||
result = sync_archive(output_path)
|
||
```
|
||
|
||
Планировщик, очередь задач и PostgreSQL пока не добавлены: модуль не зависит от
|
||
выбора будущего backend-фреймворка.
|
||
|
||
## Проверка
|
||
|
||
```bash
|
||
PYTHONPATH=backend python3 -m unittest backend/test_minjust_cbd.py -v
|
||
```
|
||
|
||
---
|
||
|
||
Акылдаш · Backend v0.1.2 · Frontend — не создан
|