From cdd856f8655ac46c26d0b813bb3b1466f73ce2ce Mon Sep 17 00:00:00 2001 From: Georges-Antoine Assi Date: Thu, 16 Oct 2025 09:07:26 -0400 Subject: [PATCH] use date-fns for dates --- .../tasks/scheduled/convert_images_to_webp.py | 21 ++++++++++++ .../Administration/RunningTaskItem.vue | 34 +++++++++++++------ 2 files changed, 44 insertions(+), 11 deletions(-) diff --git a/backend/tasks/scheduled/convert_images_to_webp.py b/backend/tasks/scheduled/convert_images_to_webp.py index 736648fff..8547de82d 100644 --- a/backend/tasks/scheduled/convert_images_to_webp.py +++ b/backend/tasks/scheduled/convert_images_to_webp.py @@ -6,6 +6,7 @@ from pathlib import Path from typing import Any, Dict, List from PIL import Image, UnidentifiedImageError +from rq import get_current_job from config import ( ENABLE_SCHEDULED_CONVERT_IMAGES_TO_WEBP, @@ -104,6 +105,24 @@ class ConvertImagesToWebPTask(PeriodicTask): self.converter = ImageConverter() self._reset_counters() + def _update_job_meta(self, total_files: int) -> None: + """Update the current RQ job's meta data with conversion stats information""" + conversion_stats = { + "processed": self.processed_count, + "errors": self.error_count, + "total": total_files, + "errorList": self.errors[:10], + } + + try: + current_job = get_current_job() + if current_job: + current_job.meta.update({"conversion_stats": conversion_stats}) + current_job.save_meta() + except Exception as e: + # Silently fail if we can't update meta (e.g., not running in RQ context) + log.debug(f"Could not update job meta: {e}") + def _reset_counters(self) -> None: """Reset processing counters.""" self.processed_count = 0 @@ -178,6 +197,7 @@ class ConvertImagesToWebPTask(PeriodicTask): total_files = len(image_files) if total_files == 0: + self._update_job_meta(total_files) log.info("No convertible images found") return self._create_result_dict(total_files) @@ -189,6 +209,7 @@ class ConvertImagesToWebPTask(PeriodicTask): # Process images for i, image_file in enumerate(image_files, 1): self._process_single_image(image_file) + self._update_job_meta(total_files) # Log progress periodically if i % 50 == 0 or i == total_files: diff --git a/frontend/src/components/Settings/Administration/RunningTaskItem.vue b/frontend/src/components/Settings/Administration/RunningTaskItem.vue index 8c77f2064..d958f534b 100644 --- a/frontend/src/components/Settings/Administration/RunningTaskItem.vue +++ b/frontend/src/components/Settings/Administration/RunningTaskItem.vue @@ -1,4 +1,9 @@ @@ -74,8 +81,13 @@ const taskDuration = computed(() => { /> {{ task.status }} - - {{ formatTimestamp(task.started_at || task.queued_at) }} + + {{ taskDistanceFromNow }}