Aller au contenu principal

3 formations sont désormais disponibles : Python, Flask et JS.

Aller au contenu principal

Tâches asynchrones (Celery)

Apprendre Flask : Le Guide Ultime
2 min de lecture
Gratuit

Imagine : Un utilisateur s'inscrit. Tu dois lui envoyer un email de bienvenue. Si l'envoi de mail prend 3 secondes, l'utilisateur va attendre 3 secondes devant une page blanche. C'est nul.

La solution :

  1. L'utilisateur clique sur "S'inscrire".
  2. Flask répond "OK !" tout de suite.
  3. En arrière-plan, un "ouvrier" (Worker) envoie l'email tranquillement.

Cet ouvrier, c'est Celery.

Architecture

  • Flask : Le producteur (donne les ordres).
  • Redis : Le courtier (la boîte aux lettres où on pose les ordres).
  • Celery Worker : L'ouvrier (qui prend les ordres et bosse).

Exemple

tasks.py :

from celery import Celery

celery = Celery('tasks', broker='redis://localhost:6379/0')

@celery.task
def send_email(email):
    # ... code pour envoyer le mail ...
    import time
    time.sleep(5)
    print(f"Email envoyé à {email} !")

app.py :

from tasks import send_email

@app.route('/register', methods=['POST'])
def register():
    # ...
    # On appelle la tâche avec .delay()
    send_email.delay('bob@mail.com')
    
    return "Inscription réussie ! (L'email arrive...)"

L'utilisateur n'attend pas. L'expérience est fluide.