eliminar fallos de asyncio

This commit is contained in:
Dulce
2026-03-26 11:41:52 -06:00
parent 5f41132f80
commit b0cc715eb3
8 changed files with 240 additions and 97 deletions

View File

@@ -55,8 +55,16 @@ async def update_task(
json=update_data,
headers=headers
)
if response.status_code == 404:
logger.warning(f"Tarea {task_id} no encontrada, intentando crearla...")
return await _create_and_update_task(
task_id, message, status, pedimento_id, organizacion_id, servicio
)
response.raise_for_status()
return response.json()
except httpx.HTTPError as e:
logger.error(f"Error al actualizar tarea {task_id}: {str(e)}")
raise HTTPException(
@@ -81,6 +89,72 @@ async def update_task(
)
)
async def _create_and_update_task(
task_id: str,
message: str,
status: str,
pedimento_id: str,
organizacion_id: str,
servicio: int
) -> Dict[str, Any]:
"""
Función interna para crear una tarea y luego actualizarla.
"""
try:
# Primero crear la tarea
logger.info(f"Creando tarea {task_id} antes de actualizar")
headers = {
"Authorization": f"Token {settings.API_TOKEN}"
}
create_data = {
"task_id": task_id,
"message": message,
"status": status,
"pedimento": pedimento_id,
"organizacion": organizacion_id,
"servicio": servicio
}
async with httpx.AsyncClient() as client:
# Crear la tarea
create_response = await client.post(
f"{settings.API_URL}/tasks/tasks/",
json=create_data,
headers=headers
)
create_response.raise_for_status()
logger.info(f"Tarea {task_id} creada exitosamente")
# Actualizar la tarea recién creada
url = f"{settings.API_URL}/tasks/tasks/{task_id}/"
update_response = await client.put(
url,
json=create_data,
headers=headers
)
update_response.raise_for_status()
logger.info(f"Tarea {task_id} actualizada exitosamente después de crear")
return update_response.json()
except httpx.HTTPError as e:
logger.error(f"Error al crear/actualizar tarea {task_id}: {str(e)}")
raise HTTPException(
status_code=500,
detail=create_error_response(
message="Error al crear la tarea",
errors=[str(e)],
metadata={
"task_id": task_id,
"status": status
}
)
)
async def register_task(
task_id: str,
message: str,
@@ -154,4 +228,4 @@ async def register_task(
errors=[str(e)],
metadata={"task_id": task_id}
)
)
)