2.0 KiB
Вопрос к Опусу — фоновая классификация при 50+ файлах
Что сделано
POST /api/classify-batch получает {batch_id}, запускает classify_worker.py
через subprocess.Popen и сразу возвращает 202 {total: N}.
Фронтенд поллит /api/batch-progress каждые 2с пока done >= total.
classify_worker.py — отдельный питон-процесс, импортирует services/classify.py,
у которого внутри ThreadPoolExecutor(max_workers=4) для параллельных
LLM-вызовов (один файл = один LLM-запрос к api.aillm.ru).
Проблема
С 4 файлами полный цикл работает. С 69 файлами:
- HTTP-сервер жив,
/healthотвечает classify_workerработает- Симулятор с внешней машины не дожидается конца — на 5+ минутах рвётся сеть/nginx
Вопросы
-
Архитектурно
subprocess.Popenнорм для прода? Или что-то более надёжное (очередь, systemd-таймер, воркер-пул)? -
Что делать с nginx при долгих запросах?
batch-progress— короткий поллинг, он не должен рваться. Но сам classify через фронтенд не идёт — только через воркер. Где узкое место? -
При двух быстрых классификациях подряд — второй
Popenсоздаст второй процесс. Старый ещё не умер. Надо проверять и убивать предыдущий? Или пусть оба работают (разные batch_id)? -
Как правильно мониторить/логировать фоновый процесс? Сейчас stdout/stderr в
/dev/null.