set timeouts

This commit is contained in:
Georges-Antoine Assi
2025-08-26 21:09:13 -04:00
parent e32e51a1e2
commit 9bb586b288
6 changed files with 12 additions and 4 deletions

View File

@@ -123,6 +123,7 @@ OIDC_TLS_CACERTFILE: Final = os.environ.get("OIDC_TLS_CACERTFILE", None)
SCAN_TIMEOUT: Final = int(os.environ.get("SCAN_TIMEOUT", 60 * 60 * 4)) # 4 hours
# TASKS
TASK_TIMEOUT: Final = int(os.environ.get("TASK_TIMEOUT", 60 * 5)) # 5 minutes
ENABLE_RESCAN_ON_FILESYSTEM_CHANGE: Final = str_to_bool(
os.environ.get("ENABLE_RESCAN_ON_FILESYSTEM_CHANGE", "false")
)

View File

@@ -510,7 +510,7 @@ async def scan_platforms(
if len(missed_platforms) > 0:
log.warning(f"{hl('Missing')} platforms from filesystem:")
for p in missed_platforms:
log.warning(f" - {p.slug}")
log.warning(f" - {p.slug} ({p.fs_slug})")
log.info(f"{emoji.EMOJI_CHECK_MARK} Scan completed")
await sm.emit("scan:done", scan_stats.__dict__)

View File

@@ -3,6 +3,7 @@ from datetime import datetime, timezone
from config import (
ENABLE_RESCAN_ON_FILESYSTEM_CHANGE,
RESCAN_ON_FILESYSTEM_CHANGE_DELAY,
TASK_TIMEOUT,
)
from decorators.auth import protected_route
from endpoints.responses import TaskExecutionResponse, TaskStatusResponse
@@ -144,7 +145,7 @@ async def run_all_tasks(request: Request) -> list[TaskExecutionResponse]:
)
jobs = [
(task_name, low_prio_queue.enqueue(task_instance.run))
(task_name, low_prio_queue.enqueue(task_instance.run, timeout=TASK_TIMEOUT))
for task_name, task_instance in runnable_tasks.items()
]
@@ -185,7 +186,7 @@ async def run_single_task(request: Request, task_name: str) -> TaskExecutionResp
detail=f"Task '{task_name}' cannot be run",
)
job = low_prio_queue.enqueue(task_instance.run)
job = low_prio_queue.enqueue(task_instance.run, timeout=TASK_TIMEOUT)
return {
"task_name": task_name,

View File

@@ -2,6 +2,7 @@ from abc import ABC, abstractmethod
from typing import Any
import httpx
from config import TASK_TIMEOUT
from exceptions.task_exceptions import SchedulerException
from handler.redis_handler import low_prio_queue
from logger.logger import log
@@ -86,6 +87,7 @@ class PeriodicTask(Task, ABC):
self.cron_string,
func=self.func,
repeat=None,
timeout=TASK_TIMEOUT,
)
return None

View File

@@ -12,6 +12,7 @@ from config import (
LAUNCHBOX_API_ENABLED,
LIBRARY_BASE_PATH,
RESCAN_ON_FILESYSTEM_CHANGE_DELAY,
SCAN_TIMEOUT,
SENTRY_DSN,
)
from config.config_manager import config_manager as cm
@@ -133,6 +134,7 @@ def process_changes(changes: Sequence[Change]) -> None:
[],
scan_type=ScanType.UNIDENTIFIED,
metadata_sources=metadata_sources,
timeout=SCAN_TIMEOUT,
)
return
@@ -155,6 +157,7 @@ def process_changes(changes: Sequence[Change]) -> None:
[db_platform.id],
scan_type=ScanType.QUICK,
metadata_sources=metadata_sources,
timeout=SCAN_TIMEOUT,
)

View File

@@ -72,7 +72,8 @@ OIDC_SERVER_APPLICATION_URL=
ENABLE_RESCAN_ON_FILESYSTEM_CHANGE=true
RESCAN_ON_FILESYSTEM_CHANGE_DELAY=5
# Periodic Tasks (optional)
# Tasks (optional)
TASK_TIMEOUT=300
ENABLE_SCHEDULED_RESCAN=true
SCHEDULED_RESCAN_CRON=0 3 * * *
ENABLE_SCHEDULED_UPDATE_SWITCH_TITLEDB=true