diff --git a/app/workers/queue_consumer.py b/app/workers/queue_consumer.py index 5478120..3cc7fb8 100644 --- a/app/workers/queue_consumer.py +++ b/app/workers/queue_consumer.py @@ -279,6 +279,22 @@ async def _process_stage(stage, worker_fn): if item.attempts >= item.max_attempts: item.status = "failed" logger.error(f"[{stage}] document_id={document_id} 영구 실패: {e}") + # B3: marker_worker 는 변환 시작 시 doc.md_status='processing' 으로 표시한다. + # 변환이 _fail()/_set_skipped() 를 거치지 않고 예외로 죽으면(예: 대형 + # batch ReadTimeout) doc.md_status 가 'processing' 에 영구 고착 = orphan + # (큐는 failed, 문서는 processing). 큐가 영구 failed 가 될 때 doc 상태도 + # 동기화한다. 재시도 중(attempts