Forge Jobs — file de tâches de fond opt-in adossée à MariaDB : enqueue depuis une requête, worker explicite (drain/run_worker), sans broker ni async.
Project description
forge-mvc-jobs
File de tâches de fond opt-in pour Forge : déporter un travail lourd hors de la requête HTTP (envoi d'emails en nombre, transcodage, import massif), via une file adossée à MariaDB et un worker explicite.
Pas de broker, pas de Celery ni de Redis, pas de runtime async : la file est une
simple table jobs, le serveur web reste synchrone (WSGI). On enfile une tâche
depuis un contrôleur, un process worker séparé la traite.
Installation
pip install --pre forge-mvc-jobs
En développement : pip install -e ./packages/forge-mvc-jobs.
Mise en place de la table
forge jobs:init # copie la migration dans mvc/migrations/
forge migration:apply # crée la table jobs
Côté web : enfiler
from forge_mvc_jobs import enqueue
# Dans un contrôleur : la requête répond tout de suite, le travail part en file.
enqueue("email.envoi", {"to": "eleve@exemple.fr", "sujet": "Bienvenue"})
Côté worker : traiter
from forge_mvc_jobs import run_worker
def envoyer_email(payload):
... # le vrai envoi
handlers = {"email.envoi": envoyer_email}
# Dans un script worker lancé séparément (pas dans le serveur web) :
run_worker(handlers)
drain(handlers) traite la file en une passe (utile en test ou en tâche
planifiée) ; run_worker(handlers) boucle. enqueue accepte queue,
max_attempts (reprise sur échec) et available_in (délai en secondes).
get_job(id) et pending_count() donnent de la visibilité.
Périmètre
- File MariaDB, réservation atomique (
UPDATE ... ORDER BY id LIMIT 1+ jeton). - Worker explicite lancé par l'application, jamais par la requête.
- Limite V1 : pas de reprise automatique d'une tâche restée
runningaprès un crash worker. - Hors périmètre : ordonnancement cron, priorités fines, broker distribué.
Documentation complète : https://forgemvc.com/docs/forge/.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file forge_mvc_jobs-1.0.0rc2.tar.gz.
File metadata
- Download URL: forge_mvc_jobs-1.0.0rc2.tar.gz
- Upload date:
- Size: 13.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eefd35a54d3f75458ed83fdde61d8f85a6888dc0886c2007fe9cc3ebfa925902
|
|
| MD5 |
5136ba94a946bc9df313aa7ef6bdae41
|
|
| BLAKE2b-256 |
0539d9cd928110ca736dde22c79c81d84f0ff38a863eb11c4bd12550b1043186
|
File details
Details for the file forge_mvc_jobs-1.0.0rc2-py3-none-any.whl.
File metadata
- Download URL: forge_mvc_jobs-1.0.0rc2-py3-none-any.whl
- Upload date:
- Size: 11.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
82ab60836fda789e766fd973974830668aa9ec7d0175c3f40c629877321bac74
|
|
| MD5 |
05223db34e4e1ed387d8c02f8db1fc5b
|
|
| BLAKE2b-256 |
cef8a46370540674460af5fda97e344667a6c60dbccf7e7f0e83cecd08bbac39
|