Docs/ Operaciones/ Tareas cron

Tareas cron

Programa tareas recurrentes que se ejecutan dentro de tus contenedores. Desde limpieza de bases de datos hasta generación de reportes, las tareas cron automatizan operaciones repetitivas según una programación definida.

Crear una tarea cron

Las tareas cron se crean a nivel de servicio. Cada tarea ejecuta un comando dentro del contenedor en ejecución del servicio.

  1. Navega a tu servicio dentro de su stack.
  2. Haz clic en la pestaña Tareas cron.
  3. Haz clic en Agregar tarea cron.
  4. Ingresa un nombre descriptivo (por ejemplo, "Limpieza diaria de base de datos").
  5. Ingresa la expresión cron para la programación.
  6. Ingresa el comando a ejecutar (por ejemplo, python manage.py cleanup).
  7. Haz clic en Crear.
Create cron job dialog -- name field, cron expression input with a human-readable preview, and command input
Note
El comando se ejecuta dentro del mismo contenedor que tu servicio, usando las mismas variables de entorno, sistema de archivos y red. Esto significa que puede acceder a tu base de datos, archivos de configuración y código de la aplicación.

Sintaxis de expresiones cron

sh0 usa expresiones cron estándar de 5 campos. Cada campo representa una unidad de tiempo:

Cron expression format
┌───────────── minute (0-59)
│ ┌───────────── hour (0-23)
│ │ ┌───────────── day of month (1-31)
│ │ │ ┌───────────── month (1-12)
│ │ │ │ ┌───────────── day of week (0-6, Sunday = 0)
│ │ │ │ │
* * * * *
SímboloSignificadoEjemplo
*Cada valor* * * * * = cada minuto
,Lista de valores0 8,12,18 * * * = 8am, mediodía, 6pm
-Rango0 9-17 * * * = cada hora de 9am a 5pm
/Paso*/15 * * * * = cada 15 minutos

Patrones comunes

Frequently used cron schedules
# Every minute
* * * * *

# Every 5 minutes
*/5 * * * *

# Every hour at minute 0
0 * * * *

# Every day at midnight
0 0 * * *

# Every day at 3:30 AM
30 3 * * *

# Every Monday at 9:00 AM
0 9 * * 1

# First day of every month at midnight
0 0 1 * *

# Every weekday (Mon-Fri) at 6:00 AM
0 6 * * 1-5
Tip
Cuando escribes una expresión cron, sh0 muestra una vista previa legible como "Todos los días a las 3:30 AM" para que puedas verificarla antes de guardar.

Seleccionar el contenedor objetivo

Cuando un servicio tiene múltiples réplicas, necesitas decidir qué contenedor ejecuta la tarea cron. sh0 ofrece dos modos de ejecución:

  • Instancia única (predeterminado) -- La tarea se ejecuta en un solo contenedor, evitando la ejecución duplicada. Esta es la opción correcta para migraciones de base de datos, generación de reportes o cualquier tarea que no deba ejecutarse concurrentemente.
  • Todas las instancias -- La tarea se ejecuta en cada réplica. Usa esto para precalentamiento de caché, limpieza de archivos locales o tareas que necesitan ejecutarse en cada instancia.
Execution mode selector -- radio buttons for 'Single instance' and 'All instances' with descriptions

Historial de ejecuciones y registros

Cada ejecución de tarea cron se registra con su hora de inicio, hora de finalización, código de salida y salida. Consulta el historial de ejecuciones desde la página de detalle de la tarea cron.

Cron job execution history table -- showing timestamps, duration, exit codes (0 for success, non-zero for failure), and output preview

Haz clic en cualquier ejecución para ver la salida completa de stdout y stderr. Esto es invaluable para depurar tareas fallidas o verificar que una tarea se completó correctamente.

Cron job execution detail -- showing full command output with stdout and stderr streams
Note
sh0 retiene las últimas 100 ejecuciones por tarea cron. Las entradas más antiguas se eliminan automáticamente para mantener la base de datos liviana.

Habilitar y deshabilitar tareas

Puedes desactivar temporalmente una tarea cron sin eliminarla. Esto es útil durante ventanas de mantenimiento o al depurar un problema causado por una tarea programada.

  • Activa o desactiva el interruptor Habilitado en la tarjeta de la tarea cron para desactivarla o reactivarla.
  • Las tareas desactivadas conservan su configuración e historial -- no se pierde nada.
  • También puedes activar una ejecución manual haciendo clic en Ejecutar ahora, independientemente de la programación.
Cron job card with enabled/disabled toggle and a Run Now button

Manejo de errores y reintentos

Cuando una tarea cron termina con un código de estado distinto de cero, sh0 marca la ejecución como fallida. Puedes configurar reintentos automáticos y notificaciones de falla:

  • Reintentos -- Establece el número de intentos de reintento (0-5) y el retraso entre reintentos.
  • Tiempo límite -- Establece un tiempo máximo de ejecución. Las tareas que exceden este límite se terminan.
  • Alertas de falla -- Configura alertas para ser notificado cuando una tarea falla. Funciona con los mismos canales de notificación que las alertas de métricas.
Warning
Si una tarea cron aún está en ejecución cuando llega la siguiente ejecución programada, sh0 omite la nueva ejecución para evitar superposición. La ejecución omitida se registra con un estado de "Omitida (superposición)".