"""arq worker settings — the queue runtime. Task functions register here. Run with: ``arq app.workers.arq_worker.WorkerSettings``. """ from typing import Any, ClassVar from arq.connections import RedisSettings from app.core.config import get_settings from app.core.logging import configure_logging, get_logger from app.workers.tasks.download_task import download_track from app.workers.tasks.enrich_task import enrich_track from app.workers.tasks.import_task import scan_local_folder log = get_logger("worker") async def startup(_ctx: dict[str, Any]) -> None: settings = get_settings() configure_logging(level=settings.log_level, json=settings.log_json) log.info("worker_startup", environment=settings.environment) async def shutdown(_ctx: dict[str, Any]) -> None: log.info("worker_shutdown") class WorkerSettings: functions: ClassVar[list[Any]] = [scan_local_folder, enrich_track, download_track] on_startup = startup on_shutdown = shutdown max_jobs = get_settings().max_parallel_downloads redis_settings = RedisSettings.from_dsn(str(get_settings().redis_url))