eliminar fallos de asyncio
This commit is contained in:
@@ -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}
|
||||
)
|
||||
)
|
||||
)
|
||||
Reference in New Issue
Block a user