Por qué no recomendamos nunca Celery si puedes evitarlo
Su director de operaciones pulsa un botón en su plataforma interna: "Generar informe de ventas trimestral". La página se queda en blanco, con un icono de carga girando sin fin. Pasan treinta segundos, un minuto. El director abre otra pestaña para no perder el…
Su director de operaciones pulsa un botón en su plataforma interna: "Generar informe de ventas trimestral". La página se queda en blanco, con un icono de carga girando sin fin. Pasan treinta segundos, un minuto. El director abre otra pestaña para no perder el tiempo, pero la frustración es palpable. Su equipo le ha dicho que es "un proceso pesado" y que "tarda un poco".
Esta escena es un síntoma común de un problema más profundo: cómo su software gestiona las tareas que no son instantáneas. La solución habitual que muchos equipos técnicos proponen por inercia es implementar un sistema de colas de tareas. Y en el ecosistema de Python y Django, el nombre que casi siempre sale a la palestra es Celery. Es un estándar de facto, potente y robusto. Y en nuestra opinión, es una de las peores decisiones que puede tomar una pyme en sus fases iniciales si no es estrictamente necesario. Es una fuente clásica de deuda técnica prematura.
La complejidad oculta de las tareas en segundo plano
Para que el director de operaciones no tuviera que esperar, la generación de ese informe debería ocurrir "en segundo plano". Es decir, su clic debería dar una orden al sistema, recibir una confirmación ("Informe en proceso, te avisaremos cuando esté listo") y permitirle seguir trabajando. El sistema, por su cuenta, generaría el PDF y se lo notificaría.
Para gestionar esta "cola" de tareas pendientes, se necesitan varias piezas de software trabajando en conjunto. Celery es un orquestador para esto, pero no funciona solo. Necesita, como mínimo:
- Un "intermediario" (Broker): Un programa aparte (como RabbitMQ o Redis) que actúa como un tablón de anuncios donde la aplicación principal publica las tareas pendientes.
- Uno o varios "trabajadores" (Workers): Procesos que están constantemente mirando ese tablón de anuncios, cogiendo la siguiente tarea de la lista y ejecutándola.
- Un sistema de monitorización: Para saber qué tareas han fallado, cuáles están en proceso y por qué el informe de ventas lleva 20 minutos "en cola".
Esto, que parece una solución técnica elegante, se traduce en problemas de negocio muy reales: un aumento directo de la complejidad. De repente, su plataforma no es una sola aplicación, sino un sistema distribuido de tres o cuatro componentes. Cada uno de ellos necesita ser configurado, desplegado, mantenido y vigilado. Esto significa más horas de desarrollo inicial, más coste de infraestructura en su proveedor de la nube y, lo más importante, muchas más cosas que pueden fallar.
¿Cuándo tiene sentido la artillería pesada (y cuándo no)?
Celery es una herramienta fantástica para lo que fue diseñada: sistemas a gran escala que necesitan procesar miles de tareas por minuto con garantías muy específicas. Piense en una red social procesando subidas de vídeo o una plataforma de e-commerce enviando cientos de miles de correos de confirmación en Black Friday.
La pregunta clave que debe hacerse como directivo no es "¿podemos usar Celery?", sino "¿el volumen y la criticidad de nuestras tareas justifican el coste de mantener una flota de camiones para un reparto que hoy hacemos en bicicleta?".
Señales de que SÍ podría necesitar una solución como Celery:
- Necesita procesar un volumen masivo y constante de tareas (cientos por minuto o más).
- Las tareas son muy diversas y requieren colas con distintas prioridades (ej: las notificaciones de pago son más urgentes que la actualización de avatares).
- Su modelo de negocio depende de un procesamiento asíncrono a gran escala y en tiempo real.
Señales de que probablemente NO lo necesita:
- Su principal necesidad es enviar emails (notificaciones, newsletters).
- Genera informes periódicos para uso interno o para un número limitado de clientes.
- Procesa ficheros subidos por usuarios (ej: importación de un CSV con clientes) de forma ocasional.
- Realiza tareas de mantenimiento nocturnas (ej: sincronizar datos con otro sistema una vez al día).
Para el 90% de las pymes B2B con las que trabajamos, sus necesidades caen en la segunda categoría. Usar Celery para esto es como contratar a un equipo de logística para gestionar el envío del correo interno.
El coste de oportunidad de la simplicidad
Optar por una solución más simple no es una decisión "barata", es una decisión inteligente. Reduce el riesgo y acelera la entrega de valor. Existen alternativas mucho más ligeras y directamente integradas en herramientas que probablemente ya utiliza, como la base de datos PostgreSQL.
Un enfoque más simple permite que su equipo de desarrollo se centre en construir funcionalidades que aportan valor al negocio, en lugar de dedicar horas a depurar por qué un "trabajador" ha perdido la conexión con el "intermediario".
Veamos una comparativa hipotética para implementar la funcionalidad de "generar informe en segundo plano":
| Métrica de Negocio | Enfoque Complejo (tipo Celery) | Enfoque Simple (integrado) |
|---|---|---|
| Tiempo de desarrollo inicial | 3-5 días | 1 día |
| Coste mensual de infraestructura | +30/50€ (servidor para el broker) | 0€ (usa la infraestructura existente) |
| Horas de mantenimiento/mes | 2-4 horas (actualizaciones, fallos) | < 1 hora |
| Complejidad para nuevos desarrolladores | Alta (requiere conocimiento específico) | Baja (usa herramientas estándar) |
| Puntos de fallo potenciales | 3 (App, Broker, Worker) | 1 (La propia App) |
Al elegir la simplicidad, no está renunciando a la funcionalidad. Está comprando velocidad, reduciendo costes operativos y minimizando el riesgo de que su sistema se caiga por un componente que, para empezar, probablemente no necesitaba.
La próxima vez que su equipo técnico proponga una solución para una tarea en segundo plano, pregúnteles directamente: "¿Es esta la forma más simple y robusta de resolver este problema ahora, o estamos diseñando para una escala que no tendremos en los próximos dos años?". La respuesta a esa pregunta puede ahorrarle miles de euros y muchos dolores de cabeza, permitiéndole invertir esos recursos en lo que de verdad importa: hacer crecer su negocio.
Relacionados
Postgres Row-Level Security: multi-tenant sin pesadillas
Imagine la escena: su director comercial accede a la nueva plataforma interna para revisar las ventas del trimestre. …
Tres señales que indican que tu backend necesita una reescritura
El equipo comercial cierra un acuerdo importante. Para activarlo, solo necesitan añadir un nuevo tipo de descuento en …
Por qué el CRM interno se construye antes que la landing
El Excel del director comercial es una fortaleza inexpugnable. Contiene proyecciones, contactos, seguimientos y notas crípticas que solo …