Update main.py
Browse files
main.py
CHANGED
|
@@ -710,6 +710,33 @@ async def process_video_task(
|
|
| 710 |
logger.exception(f"process_video_task unhandled for {job_id}")
|
| 711 |
update_job(job_id, status="failed", error="Unexpected server error")
|
| 712 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 713 |
# =============================================================================
|
| 714 |
# FILE CLEANUP HELPER
|
| 715 |
# =============================================================================
|
|
@@ -1073,6 +1100,7 @@ async def startup():
|
|
| 1073 |
logger.info("=" * 60)
|
| 1074 |
|
| 1075 |
asyncio.create_task(_queue_worker())
|
|
|
|
| 1076 |
|
| 1077 |
try:
|
| 1078 |
vids = await list_videos_from_dataset("minecraft")
|
|
|
|
| 710 |
logger.exception(f"process_video_task unhandled for {job_id}")
|
| 711 |
update_job(job_id, status="failed", error="Unexpected server error")
|
| 712 |
|
| 713 |
+
async def _cleanup_old_videos():
|
| 714 |
+
"""Deletes videos older than 1 hour every 10 minutes"""
|
| 715 |
+
while True:
|
| 716 |
+
await asyncio.sleep(600) # 10 minutes
|
| 717 |
+
|
| 718 |
+
try:
|
| 719 |
+
cutoff_time = time.time() - 3600 # 1 hour ago
|
| 720 |
+
cleaned_count = 0
|
| 721 |
+
cleaned_size_mb = 0.0
|
| 722 |
+
|
| 723 |
+
for video_file in OUTPUT_DIR.glob("*.mp4"):
|
| 724 |
+
try:
|
| 725 |
+
file_stat = video_file.stat()
|
| 726 |
+
if file_stat.st_mtime < cutoff_time:
|
| 727 |
+
file_size_mb = file_stat.st_size / 1024 / 1024
|
| 728 |
+
video_file.unlink()
|
| 729 |
+
cleaned_count += 1
|
| 730 |
+
cleaned_size_mb += file_size_mb
|
| 731 |
+
logger.info(f"Cleaned up {video_file.name} ({file_size_mb:.1f}MB)")
|
| 732 |
+
except Exception as e:
|
| 733 |
+
logger.warning(f"Cleanup failed {video_file.name}: {e}")
|
| 734 |
+
|
| 735 |
+
if cleaned_count > 0:
|
| 736 |
+
logger.info(f"Cleaned {cleaned_count} videos, freed {cleaned_size_mb:.1f}MB")
|
| 737 |
+
except Exception as e:
|
| 738 |
+
logger.error(f"Cleanup error: {e}")
|
| 739 |
+
|
| 740 |
# =============================================================================
|
| 741 |
# FILE CLEANUP HELPER
|
| 742 |
# =============================================================================
|
|
|
|
| 1100 |
logger.info("=" * 60)
|
| 1101 |
|
| 1102 |
asyncio.create_task(_queue_worker())
|
| 1103 |
+
asyncio.create_task(_cleanup_old_videos())
|
| 1104 |
|
| 1105 |
try:
|
| 1106 |
vids = await list_videos_from_dataset("minecraft")
|