# 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).