from celery import Celery

from app.config import settings

from common_logging import get_logger

logger = get_logger(__name__)

if settings.REDIS_URL:
    broker_url = settings.REDIS_URL
    backend_url = settings.REDIS_URL
else:
    broker_url = f"redis://{settings.REDIS_HOST}:{settings.REDIS_PORT}/{settings.REDIS_DB}"
    backend_url = f"redis://{settings.REDIS_HOST}:{settings.REDIS_PORT}/{settings.REDIS_DB}"

celery_app = Celery("graph_tasks", broker=broker_url, backend=backend_url)

celery_app.conf.update(
    task_serializer="json",
    accept_content=["json"],
    result_serializer="json",
    timezone="UTC",
    enable_utc=True,
    task_track_started=True,
    task_time_limit=3600,
    task_soft_time_limit=3000,
    worker_prefetch_multiplier=1,
    worker_max_tasks_per_child=100,
)

celery_app.conf.task_routes = {
    "app.services.graph.tasks.*": {"queue": "graph"},
}

logger.info("Celery app initialized")
