Files
microservice/api/api_v2/modules/pedimentos/tasks.py

26 lines
907 B
Python

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