brainax

Tareas en segundo plano y horarios

Lección 17 de 26 del curso «Vibe coding». Gratis, con animaciones y un test.

El usuario no espera

Ejemplo de la lección: llevas el sitio del medio de tu escuela con newsletter. Algunas tareas tardan: enviar un correo a mil suscriptores, comprimir un video, armar un informe. Si las haces mientras la persona espera tras el clic, mira un circulito girando por minutos. Solución: una tarea en segundo plano. El servidor responde al instante «recibido» y trabaja después. Las tareas hacen fila, como las tarjetas del esquema, y un worker, un programa ejecutor, las toma una por una.

Cron: trabajo con alarma

Cron es lanzar una tarea según un horario, como un despertador. «Cada día 9:00» en el esquema: el servidor se despierta solo y envía el recordatorio «hoy cierra el artículo». El horario se escribe con un código corto como 0 9 * * *: minuto 0, hora 9, y los asteriscos significan «cualquier día, mes y día de la semana». La trampa: la hora suele ir en UTC, la hora mundial, no en la tuya. Revisa la documentación.

Dónde ejecutarlo

Cloudflare: los Cron Triggers lanzan un Worker según un horario. Vercel: los Cron Jobs llaman a la dirección de tu API a la hora fijada. GitHub Actions (automatización dentro de GitHub) puede correr un script con horario, pero no promete el minuto exacto. Inngest: un servicio para cadenas de pasos, por ejemplo «se registró, recuérdale en tres días». Usa donde ya vive tu proyecto. Los límites, en el sitio del servicio.

¿Falló? Reintenta

Una tarea puede fallar: el servicio de correo se cayó un minuto, internet parpadeó. Un buen sistema no se rinde, reintenta tras una pausa: es la flecha «reintento» del esquema. En Inngest cada paso se reintenta solo y los pasos ya hechos no se repiten. Pídele al agente: «agrega reintentos con pausa y escribe en el log si la tarea sigue fallando». El log es un registro donde el servidor anota lo que pasó.

Nunca cobrar dos veces

Los reintentos son peligrosos si el paso ya funcionó. Ejemplo: se cobró la suscripción, pero la respuesta se perdió en el camino. Un reintento a ciegas cobra otra vez. Hace falta idempotencia: repetir el mismo paso da el mismo resultado que hacerlo una vez. Cómo: cada operación tiene un número único y el servidor primero revisa «¿esto ya se hizo?». Los webhooks del esquema también pueden llegar dos veces, misma regla.

Ponte a prueba

  1. ¿Por qué enviar mil correos como tarea en segundo plano?
    Respuesta correcta: Para que la persona no espere a que todo se envíe. El servidor responde «recibido» al instante y los correos salen después desde la fila. El servidor sigue haciendo el trabajo.
  2. ¿Qué es cron?
    Respuesta correcta: Ejecutar una tarea según un horario. Cron funciona como un despertador: «cada día a las 9:00». Repetir tras un error es un retry, y el registro de eventos es el log.
  3. ¿Qué significa idempotencia en un paso de pago?
    Respuesta correcta: Repetir el paso no cobra una segunda vez. Los errores siempre pasan. Idempotencia significa que reintentar es seguro: el servidor ve el número de la operación y no la repite.

← API: conecta otros servicios Seguridad de tu app →