Spaces:
Sleeping
Sleeping
File size: 1,406 Bytes
87112c5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | 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)
} |