Les Workers
Un worker est une unité de traitement qui exécute une tâche donnée.
-
C’est un concept haut niveau : un worker peut être implémenté avec un thread, un processus, ou même être une machine distante.
-
Les workers sont souvent utilisés dans les architectures serveur pour répartir la charge de travail et exécuter des tâches en parallèle ou en arrière-plan.
Objectif
-
Déléguer le traitement à des entités dédiées.
-
Paralléliser les opérations pour améliorer les performances.
-
Isoler les traitements lourds pour éviter de bloquer le flux principal.
-
Distribuer la charge entre plusieurs machines ou cœurs CPU.
Caractéristiques
-
Un worker prend une tâche depuis une file d’attente ou un gestionnaire.
-
Peut être persistant (toujours actif) ou éphémère (créé pour une tâche).
-
Indépendant : si un worker plante, les autres continuent.
-
Peut travailler localement ou sur un nœud distant.
Avantages
-
Parallélisme réel (multi-processus) → exploite tous les cœurs CPU.
-
Isolation : un crash d’un worker n’affecte pas les autres.
-
Scalabilité : facile à distribuer sur plusieurs serveurs.
-
Flexible : peut être un thread, un processus ou un service externe.
Limites
-
Plus lourd qu’un simple thread (processus = plus de mémoire).
-
Communication inter-worker plus lente (sérialisation/desérialisation nécessaire).
-
Nécessite un système de gestion (superviseur, orchestrateur).
Cas d’utilisation typiques
-
Serveurs web : Gunicorn lance plusieurs workers pour gérer plus de requêtes simultanées.
-
Tâches en arrière-plan : Celery, RQ → exécution différée ou planifiée.
-
Traitement distribué : Apache Spark, Dask, Ray → calcul sur cluster.
-
IA / Data Science : lancer plusieurs prédictions ou entraînements en parallèle.
Fonctions :
-
Workers (exemple)