from celery import Celery from celery_app import celery_app import asyncio import logging from typing import Dict, Any from contextlib import asynccontextmanager from .services import obtener_acuse from api.api_v2.modules.tasks.tasks import run_async_task @celery_app.task def process_acuse_request(acuse_request: Dict[str, Any]) -> Dict[str, Any]: """ Tarea de Celery para procesar la solicitud de acuse. Args: acuse_request: Diccionario con los datos de la solicitud de acuse. Returns: Diccionario con la respuesta del acuse. """ try: # Crear un nuevo event loop para esta tarea loop = asyncio.new_event_loop() asyncio.set_event_loop(loop) # Ejecutar la corutina acuse_response = loop.run_until_complete(obtener_acuse(**acuse_request)) return {"status": "processed", "data": acuse_response} except Exception as e: logging.error(f"Error processing acuse request: {str(e)}") raise finally: # Asegurarse de cerrar el loop y limpiarlo loop.close() asyncio.set_event_loop(None)