Aller au contenu
EdgeServers
Blog

Celery en production — choix du broker, sémantique de retry, et ce que Flower vous dit vraiment

13 mai 2026 · 1 min de lecture · par Sudhanshu K.

Celery est l'un de ces outils dont les défauts sont presque corrects. Presque. La policy de retry par défaut va retrier pour toujours. acks_late par défaut est False, donc un crash de worker perd la tâche. Le broker par défaut pour « démarrage rapide » est Redis sans persistance activée, donc un redémarrage Redis perd toutes les tâches en cours.

Voici le setup Celery de production que nous faisons tourner pour les clients Python managés — choix de broker, config worker, policy de retry, et le monitoring qui fait remonter les problèmes.

Une tâche de base avec les défauts sûrs

from celery import Celery, shared_task
 
app = Celery('app', broker='redis://redis:6379/0', backend='redis://redis:6379/1')
app.conf.update(
    task_acks_late=True,
    task_reject_on_worker_lost=True,
    task_track_started=True,
    worker_prefetch_multiplier=1,
    broker_connection_retry_on_startup=True,
)
 
@shared_task(bind=True, autoretry_for=(IOError,), retry_backoff=True,
             retry_jitter=True, retry_kwargs={'max_retries': 5})
def send_email(self, to, subject):
    ...

acks_late=True et prefetch_multiplier=1 ensemble signifient : prendre une tâche à la fois, n'acquitter qu'après succès. Combinés avec retry_backoff et un plafond max_retries, les jobs ne disparaissent pas dans une boucle de retry.

L'article complet couvre :

  • Redis vs RabbitMQ : quand chacun est le bon broker
  • Idempotence — la propriété que les tâches devraient avoir mais ont rarement
  • Routage des tâches vers des queues dédiées pour priorisation et isolation
  • Flower : les métriques qui comptent (profondeur de queue, latence de tâche, taux de retry)
  • Celery beat pour les tâches planifiées — et l'histoire d'élection de leader que personne ne vous prévient
  • Cycle de vie des workers : max-tasks-per-child, fuites mémoire, interaction OOM-killer

Nous livrons ce pattern Celery sur chaque stack Python managée avec du travail en arrière-plan.

Article complet disponible

Lire l'article complet