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.
- Accédez à votre service au sein de son stack.
- Cliquez sur l'onglet Tâches cron.
- Cliquez sur Ajouter une tâche cron.
- Saisissez un nom descriptif (par ex., « Nettoyage quotidien de la base de données »).
- Saisissez l'expression cron pour la planification.
- Saisissez la commande à exécuter (par ex.,
python manage.py cleanup). - Cliquez sur Créer.
Syntaxe des expressions cron
sh0 utilise les expressions cron standard à 5 champs. Chaque champ représente une unité de temps :
┌───────────── minute (0-59)
│ ┌───────────── hour (0-23)
│ │ ┌───────────── day of month (1-31)
│ │ │ ┌───────────── month (1-12)
│ │ │ │ ┌───────────── day of week (0-6, Sunday = 0)
│ │ │ │ │
* * * * *| Symbole | Signification | Exemple |
|---|---|---|
| * | Toutes les valeurs | * * * * * = chaque minute |
| , | Liste de valeurs | 0 8,12,18 * * * = 8h, midi, 18h |
| - | Plage | 0 9-17 * * * = toutes les heures de 9h à 17h |
| / | Pas | */15 * * * * = toutes les 15 minutes |
Schémas courants
# 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-5Sé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.
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.
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.
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.
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.