Workers
Actualizado el 27 de octubre de 2026
Workers
Un worker es un servicio sin puerto ni dominio: un proceso de fondo que consume una cola, ejecuta tareas programadas o procesa datos de forma continua.
Cuándo elegir un worker
- Consumir una cola (BullMQ, RabbitMQ, o una simple lista de Redis).
- Tareas recurrentes (envío de correos, sincronización, limpieza).
- Procesamiento largo que no debe bloquear tu aplicación web (generación de PDF, importaciones).
Crear un worker
- + Nuevo servicio → tipo Worker.
- Conecta el repositorio (o la imagen Docker) que contiene el código.
- Define si es necesario un comando de inicio dedicado. Es útil cuando el worker vive en el mismo repositorio que la aplicación web:
node dist/worker.js
Ejemplo: consumir una cola Redis
import Redis from "ioredis";
const redis = new Redis(process.env.REDIS_URL!);
while (true) {
// BRPOP bloquea hasta que llega un job
const [, payload] = await redis.brpop("jobs:emails", 0);
await sendEmail(JSON.parse(payload));
}
El servicio web añade los jobs (LPUSH jobs:emails …), el worker los retira: ambos servicios comparten la misma instancia Redis del proyecto, conectada mediante sus variables de entorno.
Buenas prácticas
- Un worker = una responsabilidad. Dos colas muy diferentes merecen dos workers: cada uno escala y se reinicia de forma independiente.
- Gestiona el apagado correctamente: al recibir
SIGTERM, termina el job en curso antes de salir. Los redespliegues reemplazan el proceso. - Idempotencia: un job puede reprocesarse tras un reinicio; asegúrate de que un procesamiento doble no tenga efecto.
Los logs y métricas (CPU/memoria) del worker están disponibles como en cualquier otro servicio en las pestañas Logs y Observabilidad.