Files
microservice/api/api_v2/modules/acuses/tasks.py
2025-10-05 18:54:10 -06:00

40 lines
1.1 KiB
Python

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)