---
title: "Tâche planifiée (cron) : la doc de while.sh"
url: https://while.sh/fr/docs/briques/cron/
updated: 2026-11-09
---

# Tâches planifiées

Une commande lancée à heure fixe : un import chaque nuit, un ménage, un rapport. Chaque passage est suivi, et votre agent est prévenu d'un échec.

> Vous, à votre agent : Lance l'import des ventes tous les jours à 6 h.

## Ce que votre agent écrit

Votre agent l'écrit dans while.yaml, à la racine de votre appli :

```yaml titre="while.yaml"
crons:
  - name: menage
    title: Ménage de la nuit
    schedule: "0 3 * * *"
    command: [node, menage.js]
    timezone: Europe/Paris
    timeout_seconds: 600
    retries: 1
    concurrency: forbid
```

## Ce que reçoit votre appli

Votre appli reçoit ces variables d'environnement à chaque mise en ligne :

| Variable | Ce qu'elle contient |
|---|---|
| `WHILE_CRON` | Le nom de la tâche. |
| `WHILE_TRIGGER` | Comment ce passage a été lancé : scheduled, manual ou catch_up. |
| `WHILE_CATCH_UP_START` | Le début de la période à rattraper. |
| `WHILE_CATCH_UP_END` | Sa fin. |

## Quand vous en servir

Servez-vous-en pour ce qui part à heure fixe : charger une API externe chaque nuit, faire le ménage, écrire un rapport. Rien n'est réservé entre deux passages, et un passage dure 6 heures au plus.

## Comment ça marche

Une tâche planifiée lance une commande à heure fixe, avec l'image et les variables d'un service, ou avec une image construite pour elle. Chaque passage est suivi, et un échec ou un passage manqué réveille l'agent.

## Ce qu'il faut savoir

L'horaire suit la syntaxe cron, à l'heure de Paris par défaut (`timezone`). Une tâche réussit quand elle sort avec le code 0, et tout autre code est un échec. Chaque passage garde sa durée, son code de sortie, les dernières lignes de son journal et l'erreur résumée.

Un passage qui dépasse `timeout_seconds` (600 par défaut, 6 heures au plus) est arrêté, et `retries` le relance dans le même passage (0 par défaut). `concurrency` décide des chevauchements : `forbid`, le défaut, refuse qu'un passage en chevauche un autre, `allow` le permet, et `replace` arrête le passage en cours. Un passage lancé à la main au moment où un passage planifié démarre peut encore le chevaucher.

Chaque passage sait comment il a été lancé : `WHILE_TRIGGER` vaut scheduled, manual ou `catch_up`. Un rattrapage reçoit sa période dans `WHILE_CATCH_UP_START` et `WHILE_CATCH_UP_END`, et la commande ne traite qu'elle. Votre agent relance une tâche, ou rattrape une période, avec l'outil `run_task`.

## Prix

Ces prix sont les mêmes dans toutes les offres, hors taxes :

| Ressource | Prix | Détail |
|---|---|---|
| Processeur et mémoire | 17 € par vCPU·mois et 8,50 € par Gio·mois | applis à la consommation, caches à la réservation |

## Les outils MCP de votre agent

Votre agent s'en occupe avec les outils `list_tasks` et `run_task`.

## Guides

- [Lancer un script à heure fixe depuis votre agent IA, sans serveur](/fr/guides/tache-planifiee/)
