"""arq worker settings — the queue runtime. Task functions register here. Run with: ``arq app.workers.arq_worker.WorkerSettings``. Tasks (download, enrich, transcode) are appended to ``functions`` in later steps. """ 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 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]] = [] # populated as tasks are implemented on_startup = startup on_shutdown = shutdown max_jobs = get_settings().max_parallel_downloads redis_settings = RedisSettings.from_dsn(str(get_settings().redis_url))