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.
- Navega a tu servicio dentro de su stack.
- Haz clic en la pestaña Tareas cron.
- Haz clic en Agregar tarea cron.
- Ingresa un nombre descriptivo (por ejemplo, "Limpieza diaria de base de datos").
- Ingresa la expresión cron para la programación.
- Ingresa el comando a ejecutar (por ejemplo,
python manage.py cleanup). - Haz clic en Crear.
Sintaxis de expresiones cron
sh0 usa expresiones cron estándar de 5 campos. Cada campo representa una unidad de tiempo:
┌───────────── minute (0-59)
│ ┌───────────── hour (0-23)
│ │ ┌───────────── day of month (1-31)
│ │ │ ┌───────────── month (1-12)
│ │ │ │ ┌───────────── day of week (0-6, Sunday = 0)
│ │ │ │ │
* * * * *| Símbolo | Significado | Ejemplo |
|---|---|---|
| * | Cada valor | * * * * * = cada minuto |
| , | Lista de valores | 0 8,12,18 * * * = 8am, mediodía, 6pm |
| - | Rango | 0 9-17 * * * = cada hora de 9am a 5pm |
| / | Paso | */15 * * * * = cada 15 minutos |
Patrones comunes
# 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-5Seleccionar 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.
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.
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.
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.
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.