24 lines
1.6 KiB
Markdown
24 lines
1.6 KiB
Markdown
# adr-0002: Очередь задач вместо in-process потоков
|
||
|
||
- **Статус:** accepted
|
||
- **Дата:** 2026-06-03
|
||
- **Задача:** ORCH-1 (F-2b)
|
||
|
||
## Контекст
|
||
Ранняя версия запускала стадии конвейера в in-process daemon-потоках. Проблемы: не переживало рестарт (задачи терялись), нет контроля параллелизма, нет ретраев, нет наблюдаемости.
|
||
|
||
## Решение
|
||
Введена персистентная очередь задач (`src/queue_worker.py` + таблица `jobs` в SQLite): atomic claim задачи воркером, `max_concurrency`, ретраи при сбое, restart-safe (running-задачи реквестятся при старте), эндпоинт `GET /queue`.
|
||
|
||
## Альтернативы
|
||
- In-process потоки — отклонены (не restart-safe).
|
||
- Внешний брокер (Redis/RabbitMQ) — избыточно для текущего масштаба; SQLite-очередь проще и без новых зависимостей.
|
||
|
||
## Последствия
|
||
- Конвейер переживает рестарт контейнера.
|
||
- Контроль параллелизма и наблюдаемость через `/queue`.
|
||
- ⚠️ Очередь общая на все проекты прод-инстанса — фактор группового риска при self-hosting (см. `docs/operations/INFRA.md`).
|
||
|
||
## Связи
|
||
adr-0001 (реестр проектов), INFRA.md (общая очередь при self-hosting).
|