import logging from celery import shared_task from .services import generate_questions logger = logging.getLogger(__name__) @shared_task(bind=True, max_retries=3, default_retry_delay=60) def generate_questions_task(self, sid): """ Celery task to generate questions asynchronously. Args: sid: StudyKit SID Returns: dict with status and message """ try: logger.info(f"🚀 Starting question generation for StudyKit {sid}") success, error_message = generate_questions(sid) if success: logger.info(f"✅ Question generation completed for StudyKit {sid}") return { 'status': 'success', 'sid': sid, 'message': 'Questions generated successfully' } else: logger.error(f"❌ Question generation failed for StudyKit {sid}: {error_message}") # Retry on failure raise self.retry(exc=Exception(error_message)) except Exception as e: logger.exception(f"💥 Fatal error in question generation task for {sid}") # Retry up to max_retries times if self.request.retries < self.max_retries: raise self.retry(exc=e) return { 'status': 'failed', 'sid': sid, 'message': str(e) }