fix: add and download issue
This commit is contained in:
parent
2441730862
commit
1e357181b6
@ -84,12 +84,12 @@ class DownloadService:
|
|||||||
# Statistics tracking
|
# Statistics tracking
|
||||||
self._total_downloaded_mb: float = 0.0
|
self._total_downloaded_mb: float = 0.0
|
||||||
self._download_speeds: deque[float] = deque(maxlen=10)
|
self._download_speeds: deque[float] = deque(maxlen=10)
|
||||||
|
|
||||||
|
# Track if queue progress has been initialized
|
||||||
|
self._queue_progress_initialized: bool = False
|
||||||
|
|
||||||
# Load persisted queue
|
# Load persisted queue
|
||||||
self._load_queue()
|
self._load_queue()
|
||||||
|
|
||||||
# Initialize queue progress tracking
|
|
||||||
asyncio.create_task(self._init_queue_progress())
|
|
||||||
|
|
||||||
logger.info(
|
logger.info(
|
||||||
"DownloadService initialized",
|
"DownloadService initialized",
|
||||||
@ -97,7 +97,14 @@ class DownloadService:
|
|||||||
)
|
)
|
||||||
|
|
||||||
async def _init_queue_progress(self) -> None:
|
async def _init_queue_progress(self) -> None:
|
||||||
"""Initialize the download queue progress tracking."""
|
"""Initialize the download queue progress tracking.
|
||||||
|
|
||||||
|
This is called lazily when queue processing starts to ensure
|
||||||
|
the event loop is running and the coroutine can be properly awaited.
|
||||||
|
"""
|
||||||
|
if self._queue_progress_initialized:
|
||||||
|
return
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from src.server.services.progress_service import ProgressType
|
from src.server.services.progress_service import ProgressType
|
||||||
await self._progress_service.start_progress(
|
await self._progress_service.start_progress(
|
||||||
@ -106,6 +113,7 @@ class DownloadService:
|
|||||||
title="Download Queue",
|
title="Download Queue",
|
||||||
message="Queue ready",
|
message="Queue ready",
|
||||||
)
|
)
|
||||||
|
self._queue_progress_initialized = True
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error("Failed to initialize queue progress", error=str(e))
|
logger.error("Failed to initialize queue progress", error=str(e))
|
||||||
|
|
||||||
@ -239,6 +247,9 @@ class DownloadService:
|
|||||||
Raises:
|
Raises:
|
||||||
DownloadServiceError: If adding items fails
|
DownloadServiceError: If adding items fails
|
||||||
"""
|
"""
|
||||||
|
# Initialize queue progress tracking if not already done
|
||||||
|
await self._init_queue_progress()
|
||||||
|
|
||||||
created_ids = []
|
created_ids = []
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@ -363,6 +374,9 @@ class DownloadService:
|
|||||||
DownloadServiceError: If queue processing is already active
|
DownloadServiceError: If queue processing is already active
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
|
# Initialize queue progress tracking if not already done
|
||||||
|
await self._init_queue_progress()
|
||||||
|
|
||||||
# Check if download already active
|
# Check if download already active
|
||||||
if self._active_download:
|
if self._active_download:
|
||||||
raise DownloadServiceError(
|
raise DownloadServiceError(
|
||||||
|
|||||||
@ -157,7 +157,7 @@ class ProgressService:
|
|||||||
self._event_handlers[event_name] = []
|
self._event_handlers[event_name] = []
|
||||||
|
|
||||||
self._event_handlers[event_name].append(handler)
|
self._event_handlers[event_name].append(handler)
|
||||||
logger.debug("Event handler subscribed", event=event_name)
|
logger.debug("Event handler subscribed", event_type=event_name)
|
||||||
|
|
||||||
def unsubscribe(
|
def unsubscribe(
|
||||||
self, event_name: str, handler: Callable[[ProgressEvent], None]
|
self, event_name: str, handler: Callable[[ProgressEvent], None]
|
||||||
@ -171,10 +171,13 @@ class ProgressService:
|
|||||||
if event_name in self._event_handlers:
|
if event_name in self._event_handlers:
|
||||||
try:
|
try:
|
||||||
self._event_handlers[event_name].remove(handler)
|
self._event_handlers[event_name].remove(handler)
|
||||||
logger.debug("Event handler unsubscribed", event=event_name)
|
logger.debug(
|
||||||
|
"Event handler unsubscribed", event_type=event_name
|
||||||
|
)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
logger.warning(
|
logger.warning(
|
||||||
"Handler not found for unsubscribe", event=event_name
|
"Handler not found for unsubscribe",
|
||||||
|
event_type=event_name,
|
||||||
)
|
)
|
||||||
|
|
||||||
async def _emit_event(self, event: ProgressEvent) -> None:
|
async def _emit_event(self, event: ProgressEvent) -> None:
|
||||||
@ -204,7 +207,7 @@ class ProgressService:
|
|||||||
if isinstance(result, Exception):
|
if isinstance(result, Exception):
|
||||||
logger.error(
|
logger.error(
|
||||||
"Event handler raised exception",
|
"Event handler raised exception",
|
||||||
event=event_name,
|
event_type=event_name,
|
||||||
error=str(result),
|
error=str(result),
|
||||||
handler_index=idx,
|
handler_index=idx,
|
||||||
)
|
)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user