"""
Event Bus Celery Tasks.
"""
from celery import shared_task

import structlog

logger = structlog.get_logger()


@shared_task(bind=True, max_retries=3)
def process_event_async(self, event_data: dict):
    """
    Process an event asynchronously.
    """
    from .events import event_bus
    
    try:
        event_type = event_data.get('event_type')
        logger.info('processing_async_event', event_type=event_type)
        
        # Reconstruct event from data
        # This is a simplified version - in production you'd want proper serialization
        event_bus.publish_from_dict(event_data)
        
    except Exception as e:
        logger.error('async_event_processing_error', error=str(e))
        raise self.retry(exc=e, countdown=60)
