1.6 KiB
1.6 KiB
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).