ai-hackaton-backend/celery_worker/celery_app.py
2025-09-10 21:41:42 +03:00

41 lines
1.4 KiB
Python

import logging
from celery import Celery
from celery.signals import setup_logging
from rag.settings import settings
celery_app = Celery(
"hr_ai_backend",
broker=f"redis://{settings.redis_cache_url}:{settings.redis_cache_port}/{settings.redis_cache_db}",
backend=f"redis://{settings.redis_cache_url}:{settings.redis_cache_port}/{settings.redis_cache_db}",
include=["celery_worker.tasks", "celery_worker.interview_analysis_task"],
)
celery_app.conf.update(
task_serializer="json",
accept_content=["json"],
result_serializer="json",
timezone="UTC",
enable_utc=True,
worker_log_format="[%(asctime)s: %(levelname)s/%(processName)s] %(message)s",
worker_task_log_format="[%(asctime)s: %(levelname)s/%(processName)s][%(task_name)s(%(task_id)s)] %(message)s",
task_acks_late=True,
worker_prefetch_multiplier=1,
task_reject_on_worker_lost=True,
result_extended=True,
)
@setup_logging.connect
def config_loggers(*args, **kwargs):
"""Configure logging for Celery worker"""
logging.basicConfig(
level=logging.INFO,
format="[%(asctime)s: %(levelname)s/%(name)s] %(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
)
# Set specific log levels
logging.getLogger("celery").setLevel(logging.INFO)
logging.getLogger("celery.worker").setLevel(logging.INFO)
logging.getLogger("celery.task").setLevel(logging.INFO)