import asyncio
from datetime import datetime

def log(msg):
    print(f"[{datetime.now().strftime('%H:%M:%S')}] {msg}")

async def tarea_asincrona():
    log("Tarea asincrónica INICIADA")
    await asyncio.sleep(5)
    log("Tarea asincrónica TERMINADA")

async def tarea_paralela():
    log("Tarea paralela INICIADA")
    await asyncio.sleep(1)
    log("Tarea paralela TERMINADA")

async def main():
    log("Iniciando flujo principal")

    # Lanzar tarea paralela (no bloquea)
    asyncio.create_task(tarea_paralela())

    # Lanzar tarea asincrónica, pero NO esperarla aún
    tarea = asyncio.create_task(tarea_asincrona())

    # Hacer otras cosas mientras tanto
    log("Realizando acción 1 mientras tareas corren...")
    await asyncio.sleep(1)
    log("Realizando acción 2 mientras tareas corren...")

    # Ahora sí esperar que tarea_asincrona termine
    await tarea

    log("Flujo principal FINALIZADO")

# Ejecutar el flujo
asyncio.run(main())