Gérer les tâches planifiées
Gérer les tâches planifiées
Le planificateur lance des tâches à intervalle régulier : envoi des emails en file d'attente, répétitions automatiques, nettoyage des journaux… Chaque tâche est un Type de tâche de fond programmée. Les applications déclarent ces tâches. Dokos crée les fiches à chaque migration : vous ne pouvez pas en créer une à la main. Pour ajouter votre propre tâche, utilisez un script serveur planifié.
Prérequis
- Le rôle Gestionnaire système.
Consulter et régler une tâche
- Ouvrez la recherche (Ctrl+K) et saisissez Type de tâche de fond programmée.
- Ouvrez une tâche, par exemple
frappe.email.queue.flush.
| Champ | Rôle |
|---|---|
| Méthode | La fonction Python lancée. Lecture seule. |
| Fréquence | Tous (toutes les quelques minutes), Toutes les heures, Quotidien, Hebdomadaire, Mensuel, Annuel, leurs variantes « Long » et « Maintenance », ou Cron. Lecture seule. |
| Format Cron | L'expression cron, pour la fréquence Cron. Exemple : 0 3 * * * pour 3 h chaque jour. |
| File d'attente | Pour la fréquence Cron seulement : default, short ou long. Sans valeur, une tâche « Long » ou « Maintenance » va dans long, les autres dans default. |
| Arrêté | Cochez pour ne plus lancer la tâche. |
| Créer un journal | Garde une trace de chaque exécution. Toujours actif, sauf pour les fréquences Tous et Cron. |
| Dernière exécution / Prochaine exécution | Les dates calculées par le planificateur. |
Le menu Actions propose :
- Exécuter : met la tâche en file d'attente tout de suite.
- Ignorer la prochaine exécution : saute la prochaine date prévue.
Choisir la file d'attente
| File d'attente | Délai maximal par défaut | Usage |
|---|---|---|
short | 300 secondes | Tâches très courtes. |
default | 300 secondes | La plupart des tâches. |
long | 1 500 secondes | Tâches longues : rapports lourds, nettoyage. |
Une tâche qui dépasse ce délai est arrêtée et passe en échec. L'hébergeur peut changer ces délais dans common_site_config.json, clé workers :
{
"workers": {
"long": {
"timeout": 3600
}
}
}
Planifier un script serveur
Les scripts serveur doivent être activés sur le serveur (clé server_script_enabled de common_site_config.json).
- Ouvrez la recherche et saisissez Script Serveur (Python).
- Créez un script et choisissez le Type de script « Événement programmé ».
- Choisissez la Fréquence de l'événement.
- Pour la fréquence Cron, saisissez le Format Cron et, si besoin, la File d'attente.
- Saisissez le Script, puis enregistrez.
Dokos crée alors le Type de tâche de fond programmée lié au script. Cochez Désactivé sur le script pour l'arrêter.
Exemple
Exemple fictif : chaque matin à 8 h, la société Maison Verte SARL veut un email qui compte les factures de vente validées la veille.
- Type de script : Événement programmé
- Fréquence de l'événement : Cron
- Format Cron :
0 8 * * * - Script :
hier = frappe.utils.add_days(frappe.utils.today(), -1)
nombre = frappe.db.count("Sales Invoice", {"docstatus": 1, "posting_date": hier})
frappe.sendmail(
recipients=["commercial@maisonverte.example"],
subject=f"Factures du {hier}",
message=f"{nombre} factures de vente validées.",
)
Le script s'exécute tel quel, sans fonction def execute(). Les instructions import sont interdites : utilisez l'objet frappe fourni. Voir Scripts serveur.
Surveiller les exécutions
- Ouvrez la recherche et saisissez Journal des tâches de fonds programmées.
- Filtrez sur le Statut : Démarrer, Planifié, Terminer ou Échoué.
- Ouvrez une ligne. Détails contient la trace de l'erreur en cas d'échec.
Les journaux sont supprimés après 7 jours par défaut (Paramètres des journaux).