This release is a pre-release and may not be stable for production use.
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 en base, réservation atomique (candidate choisie, puis réservée sous garde
status='pending'). - Worker explicite lancé par l'application, jamais par la requête.
- Reprise après plantage d'un worker :
reclaim_stale()etforge jobs:reclaimrendent à la file les tâchesrunningdont le bail a expiré. - Hors périmètre : ordonnancement cron, priorités fines, broker distribué.
Documentation complète : https://forgemvc.com/docs/forge/.
Metadata
Release files for forge-mvc-jobs 1.0.0rc9
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| forge_mvc_jobs-1.0.0rc9.tar.gz | 39.4 kB | Without provenance | Details for forge_mvc_jobs-1.0.0rc9.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| forge_mvc_jobs-1.0.0rc9-py3-none-any.whl | Python 3 | none | any | Details for forge_mvc_jobs-1.0.0rc9-py3-none-any.whl |
Total release size: 61.5 kB
Release files / forge_mvc_jobs-1.0.0rc9.tar.gz
| Download URL | forge_mvc_jobs-1.0.0rc9.tar.gz |
|---|---|
| Size | 39.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1a45c86c4d71cc55494a5ad74a620399c7242475bd725b52a9e2a1b4d4cabb67
|
|
BLAKE2b-256 checksum How to use checksums |
f4a413780c3add6f0139e39f0ba969c16e3dee60db4283413bf0f5bd70edf050
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|
Release files / forge_mvc_jobs-1.0.0rc9-py3-none-any.whl
| Download URL | forge_mvc_jobs-1.0.0rc9-py3-none-any.whl |
|---|---|
| Size | 22.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
707459018ef02c93fb48bbca175c137a9a2b59aed56778aca7190afe974d7e45
|
|
BLAKE2b-256 checksum How to use checksums |
d1e366422a342584c32f6c598deb6126bb498f467cd527d8b075f2d89f0e2e2e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|
Security for forge-mvc-jobs 1.0.0rc9
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.