Defer offline batch labeling until after inference results are ready.
Run visualization from pipeline/result paths without vis_pending copies, publish labeled MP4 for browser only after visualize_result_video completes, and purge batch cache after the background labeling task finishes. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -29,7 +29,6 @@ from app.services.video_batch_cleanup import (
|
||||
purge_expired_pipeline_inputs,
|
||||
purge_expired_visualizations,
|
||||
purge_surgery_batch_tree,
|
||||
stage_visualization_pending,
|
||||
)
|
||||
from app.algo_host import BatchAlgorithmService
|
||||
from app.services.voice_terminal_hub import VoiceTerminalHub
|
||||
@@ -66,12 +65,28 @@ def _require_site_config_path() -> Path:
|
||||
def _background_finalize_visualization(
|
||||
runner: BatchAlgorithmService,
|
||||
surgery_id: str,
|
||||
*,
|
||||
video_path: Path,
|
||||
result_path: Path,
|
||||
digest: str,
|
||||
candidate_key: str,
|
||||
) -> None:
|
||||
try:
|
||||
runner.finalize_visualization(surgery_id=surgery_id)
|
||||
runner.finalize_visualization(
|
||||
surgery_id=surgery_id,
|
||||
video_path=video_path,
|
||||
result_path=result_path,
|
||||
)
|
||||
except Exception:
|
||||
logger.exception("offline batch visualization failed surgery_id={}", surgery_id)
|
||||
finally:
|
||||
purge_batch_artifacts(
|
||||
runner.root_dir,
|
||||
surgery_id,
|
||||
digest=digest,
|
||||
candidate_key=candidate_key,
|
||||
)
|
||||
purge_surgery_batch_tree(runner.root_dir, surgery_id)
|
||||
purge_expired_visualizations(
|
||||
runner.root_dir,
|
||||
ttl_hours=float(bp.VIDEO_BATCH_VIS_TTL_HOURS),
|
||||
@@ -178,23 +193,24 @@ async def offline_batch(
|
||||
len(result.details),
|
||||
)
|
||||
|
||||
cache_input = result.input_path
|
||||
if include_visualization:
|
||||
stage_visualization_pending(
|
||||
background_tasks.add_task(
|
||||
_background_finalize_visualization,
|
||||
runner,
|
||||
surgery_id,
|
||||
video_path=result.input_path,
|
||||
result_path=result.output_path,
|
||||
digest=result.video_sha256,
|
||||
candidate_key=result.candidate_cache_key,
|
||||
)
|
||||
else:
|
||||
purge_batch_artifacts(
|
||||
runner.root_dir,
|
||||
surgery_id,
|
||||
source_mp4=cache_input,
|
||||
result_tsv=result.output_path,
|
||||
digest=result.video_sha256,
|
||||
candidate_key=result.candidate_cache_key,
|
||||
)
|
||||
background_tasks.add_task(_background_finalize_visualization, runner, surgery_id)
|
||||
|
||||
purge_batch_artifacts(
|
||||
runner.root_dir,
|
||||
surgery_id,
|
||||
digest=result.video_sha256,
|
||||
candidate_key=result.candidate_cache_key,
|
||||
)
|
||||
purge_surgery_batch_tree(runner.root_dir, surgery_id)
|
||||
purge_surgery_batch_tree(runner.root_dir, surgery_id)
|
||||
|
||||
visualization_url: str | None = None
|
||||
if include_visualization:
|
||||
|
||||
Reference in New Issue
Block a user