# backend/core/celery.py import os from celery import Celery from celery import Task import gc import logging # Postavi Django settings modul os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'core.settings') app = Celery('core') logger = logging.getLogger(__name__) class ResourceAwareTask(Task): """Celery base task s hookovima za memory-heavy async operacije.""" abstract = True def on_success(self, retval, task_id, args, kwargs): logger.info("Celery task uspješan: %s (%s)", self.name, task_id) super().on_success(retval, task_id, args, kwargs) def on_failure(self, exc, task_id, args, kwargs, einfo): logger.exception("Celery task neuspješan: %s (%s): %s", self.name, task_id, exc) super().on_failure(exc, task_id, args, kwargs, einfo) def after_return(self, status, retval, task_id, args, kwargs, einfo): gc.collect() super().after_return(status, retval, task_id, args, kwargs, einfo) # Koristi konfiguraciju iz settings.py s prefiksom 'CELERY_' app.config_from_object('django.conf:settings', namespace='CELERY') # Automatski pronalazi taskove u svim 'modules.*' app.autodiscover_tasks()