Aller au contenu

Aide-mémoire Jobs

Synthèse de l'API de forge-mvc-jobs, à garder sous la main.

Mise en place de la table

Étape Commande
Déposer la migration de la table jobs forge jobs:init
Appliquer la migration sur la base forge migration:apply

Enfiler (côté web)

Appel Résultat
enqueue(task, payload) Enfile une tâche ; renvoie son identifiant (int).
enqueue(task, payload, max_attempts=3) Enfile avec un nombre d'essais.
enqueue(task, payload, available_in=60) Diffère la disponibilité (en secondes).
enqueue(task, payload, queue="emails") Choisit une file nommée.

task vide, max_attempts < 1 ou payload non sérialisable en JSON lèvent
JobError.

Traiter (côté worker)

Appel Résultat
process_one(handlers) Traite une tâche ; True si traitée, False si file vide.
drain(handlers) Traite toutes les tâches disponibles (passe unique) ; renvoie le nombre traité.
run_worker(handlers) Boucle de worker : vide la file, attend si vide, recommence.

handlers est un dict {"nom.de.tache": fonction}, chaque fonction recevant la
charge utile (dict).

Inspecter

Appel Résultat
pending_count() Nombre de tâches en attente.
get_job(job_id) État d'une tâche (Job) ou None.

Job (figé) expose id, queue, task, status, attempts,
max_attempts, last_error.
status vaut pending, running, done ou failed.

Constantes

Nom Valeur ou rôle
TABLE_NAME "jobs"
CREATE_TABLE_SQL SQL de création de la table jobs.
JobError Levée sur tâche invalide (texte vide, essais négatifs, charge non-JSON).

Le modèle web et worker

Serveur web    ->  enqueue(task, payload)  ->  table jobs (MariaDB)
Process worker <-  run_worker(handlers)     <-  table jobs (MariaDB)

Rappel

Forge Core ne dépend pas du paquet.
Il n'y a ni broker, ni async : une table MariaDB et un worker explicite.
Le paramètre db= rend la file injectable pour les tests.