Docs/ Opérations/ Tâches cron

Tâches cron

Planifiez des tâches récurrentes qui s'exécutent à l'intérieur de vos conteneurs. Du nettoyage de base de données à la génération de rapports, les tâches cron automatisent les opérations répétitives selon un calendrier défini.

Création d'une tâche cron

Les tâches cron sont créées au niveau du service. Chaque tâche exécute une commande à l'intérieur du conteneur en cours d'exécution du service.

  1. Accédez à votre service au sein de son stack.
  2. Cliquez sur l'onglet Tâches cron.
  3. Cliquez sur Ajouter une tâche cron.
  4. Saisissez un nom descriptif (par ex., « Nettoyage quotidien de la base de données »).
  5. Saisissez l'expression cron pour la planification.
  6. Saisissez la commande à exécuter (par ex., python manage.py cleanup).
  7. Cliquez sur Créer.
Create cron job dialog -- name field, cron expression input with a human-readable preview, and command input
Note
La commande s'exécute à l'intérieur du même conteneur que votre service, utilisant les mêmes variables d'environnement, système de fichiers et réseau. Cela signifie qu'elle peut accéder à votre base de données, vos fichiers de configuration et votre code applicatif.

Syntaxe des expressions cron

sh0 utilise les expressions cron standard à 5 champs. Chaque champ représente une unité de temps :

Cron expression format
┌───────────── minute (0-59)
│ ┌───────────── hour (0-23)
│ │ ┌───────────── day of month (1-31)
│ │ │ ┌───────────── month (1-12)
│ │ │ │ ┌───────────── day of week (0-6, Sunday = 0)
│ │ │ │ │
* * * * *
SymboleSignificationExemple
*Toutes les valeurs* * * * * = chaque minute
,Liste de valeurs0 8,12,18 * * * = 8h, midi, 18h
-Plage0 9-17 * * * = toutes les heures de 9h à 17h
/Pas*/15 * * * * = toutes les 15 minutes

Schémas courants

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
Lorsque vous tapez une expression cron, sh0 affiche un aperçu lisible comme « Tous les jours à 3h30 » pour que vous puissiez vérifier avant d'enregistrer.

Sélection du conteneur cible

Lorsqu'un service a plusieurs réplicas, vous devez décider quel conteneur exécute la tâche cron. sh0 offre deux modes d'exécution :

  • Instance unique (par défaut) -- La tâche s'exécute dans un seul conteneur, empêchant l'exécution en double. C'est le bon choix pour les migrations de base de données, la génération de rapports ou toute tâche qui ne doit pas s'exécuter simultanément.
  • Toutes les instances -- La tâche s'exécute dans chaque réplica. Utilisez ceci pour le réchauffage du cache, le nettoyage de fichiers locaux ou les tâches qui doivent s'exécuter sur chaque instance.
Execution mode selector -- radio buttons for 'Single instance' and 'All instances' with descriptions

Historique d'exécution et logs

Chaque exécution de tâche cron est enregistrée avec son heure de début, heure de fin, code de sortie et sortie. Consultez l'historique d'exécution depuis la page de détail de la tâche cron.

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

Cliquez sur n'importe quelle exécution pour voir la sortie complète stdout et stderr. C'est inestimable pour déboguer les tâches échouées ou vérifier qu'une tâche s'est terminée correctement.

Cron job execution detail -- showing full command output with stdout and stderr streams
Note
sh0 conserve les 100 dernières exécutions par tâche cron. Les entrées plus anciennes sont automatiquement supprimées pour garder la base de données légère.

Activation et désactivation des tâches

Vous pouvez temporairement désactiver une tâche cron sans la supprimer. C'est utile pendant les fenêtres de maintenance ou lors du débogage d'un problème causé par une tâche planifiée.

  • Activez ou désactivez le commutateur Activée sur la carte de la tâche cron pour la désactiver ou la réactiver.
  • Les tâches désactivées conservent leur configuration et leur historique -- rien n'est perdu.
  • Vous pouvez également déclencher une exécution manuelle en cliquant sur Exécuter maintenant, indépendamment de la planification.
Cron job card with enabled/disabled toggle and a Run Now button

Gestion des erreurs et tentatives

Lorsqu'une tâche cron se termine avec un code de statut non nul, sh0 marque l'exécution comme échouée. Vous pouvez configurer des tentatives automatiques et des notifications d'échec :

  • Tentatives -- Définissez le nombre de tentatives (0-5) et le délai entre les tentatives.
  • Délai d'expiration -- Définissez une durée maximale d'exécution. Les tâches qui dépassent cette limite sont terminées.
  • Alertes en cas d'échec -- Configurez des alertes pour être notifié lorsqu'une tâche échoue. Fonctionne avec les mêmes canaux de notification que les alertes de métriques.
Warning
Si une tâche cron est toujours en cours d'exécution lorsque la prochaine exécution planifiée arrive, sh0 saute la nouvelle exécution pour empêcher le chevauchement. L'exécution sautée est journalisée avec un statut « Sautée (chevauchement) ».