flask_api / tasks.py
vikkyblacq's picture
first commit
87112c5
Raw History Blame Contribute Delete
1.41 kB
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)
}