from celery_app import celery_app from .services import put_pedimento_data import asyncio # Necesario para ejecutar funciones async dentro de Celery @celery_app.task(bind=True) def process_pedimento_completo_request(self, pedimento_data: dict): """ Tarea de Celery para procesar la descarga de un solo documento edoc. """ try: # Ejecutar la función asíncrona dentro del hilo síncrono de Celery loop = asyncio.get_event_loop() result = loop.run_until_complete(put_pedimento_data(**pedimento_data)) return {"status": "success", "result": result} except Exception as e: # Manejo de errores self.update_state( state='FAILURE', meta={'exc_type': type(e).__name__, 'exc_message': str(e)} ) # Es crucial volver a lanzar la excepción para que Celery la marque como fallida raise e