Guzmán D. Darío Senior Python Developer Español Hire me
Taller autoguiado

De bloqueante a tiempo real: un pipeline de video multi-cámara con asyncio

Paso 23 de 23
Paso 23 de 23

Lo que lograste, y por dónde seguir

Empezaste con un bucle de tres líneas que procesaba 12 frames por segundo y se caía al agregar la segunda cámara. Terminaste con un pipeline que aguanta sesenta y cuatro fuentes, sobrevive a que se caigan, se apaga sin perder trabajo y te dice dónde está su cuello de botella.

Y todo en un solo hilo.

Lo que construiste

Las ideas que sirven más allá del video

Si dentro de un año olvidas todo el código de este taller, que te queden estas seis:

Saca el cómputo pesado de tu proceso. Entonces tu event loop se convierte en un enrutador, y enrutar es lo que hace bien.

Desacopla con colas. Acotadas, siempre. Una cola sin límite no es comodidad, es una fuga de memoria con pasos extra.

Perder datos puede ser correcto, si lo elegiste tú. Lo que nunca es correcto es perderlos sin saber cuántos.

Mide las colas, no el código. En un sistema de etapas, el desequilibrio entre ellas te dice más que cualquier profiler.

Libera en finally. Relanza la cancelación. Los dos descuidos que convierten un apagado limpio en uno que se queda colgado.

Un hilo en el borde está bien. Todo el trabajo en hilos, no. Saber distinguir esas dos situaciones vale más que cualquier truco de sintaxis.

¿Y no habría sido más fácil con hilos?

Merece una respuesta honesta ahora que ya tienes criterio para juzgarla.

Con cuatro cámaras y el modelo dentro del proceso: sí, y en menos líneas. De verdad.

Lo que cambió la respuesta fueron tres cosas: el cómputo salió del proceso y ya no quedaba nada donde aparcar un hilo; el número de fuentes creció hasta que esperar barato empezó a importar; y timeouts, cancelación y concurrencia estructurada no tienen equivalente limpio con hilos.

Elegir bien entre las dos opciones, y saber decir por qué, es el objetivo real de este taller.

Por dónde seguir

Batching en el servicio del modelo. Ahora mandas una petición por frame. Juntar varios frames en una sola petición multiplica el rendimiento del modelo, y es la optimización con mejor relación esfuerzo/beneficio que te queda.

Persistencia de verdad. Tus eventos viven en memoria, en los últimos 200. Mándalos a una base de datos, a un topic de Kafka o a un archivo, y aprovecha para aplicar lo aprendido: esa escritura también quiere su cola con política propia.

Métricas de verdad. Exporta la longitud de las colas y las tasas por etapa a Prometheus, y móntate un panel. Ya tienes los números; solo falta sacarlos por un endpoint.

Concurrencia estructurada a fondo. Lee sobre asyncio.TaskGroup y sobre por qué la gente que diseñó Trio insiste en que las tareas no deberían poder escaparse de su ámbito.

Y si tu proyecto crece de verdad, vuelve al bonus 20: el video se va a un framework de medios y tu Python se queda con el plano de control.

Checkpoint · Gracias por llegar hasta aquí

Si algo de este taller no quedó claro, o si lo llevaste a un proyecto real y te topaste con algo que aquí no aparece, escríbeme. Los talleres mejoran con lo que cuenta la gente que los hace.

Y si te sirvió, la mejor forma de fijarlo es enseñárselo a alguien más.