Version de développement
Cette documentation décrit la version « next » (develop), non encore publiée. Pour la version stable, basculez sur « v5 » dans l'en-tête.
Outils

Gérer les tâches planifiées

Surveiller, arrêter ou lancer les tâches planifiées de Dokos, et planifier un script serveur.

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

  1. Ouvrez la recherche (Ctrl+K) et saisissez Type de tâche de fond programmée.
  2. Ouvrez une tâche, par exemple frappe.email.queue.flush.
ChampRôle
MéthodeLa fonction Python lancée. Lecture seule.
FréquenceTous (toutes les quelques minutes), Toutes les heures, Quotidien, Hebdomadaire, Mensuel, Annuel, leurs variantes « Long » et « Maintenance », ou Cron. Lecture seule.
Format CronL'expression cron, pour la fréquence Cron. Exemple : 0 3 * * * pour 3 h chaque jour.
File d'attentePour 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 journalGarde une trace de chaque exécution. Toujours actif, sauf pour les fréquences Tous et Cron.
Dernière exécution / Prochaine exécutionLes 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'attenteDélai maximal par défautUsage
short300 secondesTâches très courtes.
default300 secondesLa plupart des tâches.
long1 500 secondesTâ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).

  1. Ouvrez la recherche et saisissez Script Serveur (Python).
  2. Créez un script et choisissez le Type de script « Événement programmé ».
  3. Choisissez la Fréquence de l'événement.
  4. Pour la fréquence Cron, saisissez le Format Cron et, si besoin, la File d'attente.
  5. 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

  1. Ouvrez la recherche et saisissez Journal des tâches de fonds programmées.
  2. Filtrez sur le Statut : Démarrer, Planifié, Terminer ou Échoué.
  3. 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).