📧 [Backend] SMTP synchrone → async (register/reset password bloquent) #10

Closed
opened 2026-08-03 10:20:47 -04:00 by NixCyRy · 0 comments
NixCyRy commented 2026-08-03 10:20:47 -04:00 (Migrated from github.com)

Problème

send_email() utilise smtplib.SMTP_SSL de manière synchrone. Les endpoints /api/register et /api/forgot-password bloquent jusqu'à ce que le courriel soit envoyé (ou timeout SMTP). Si SMTP est lent → l'utilisateur attend plusieurs secondes.

Solution

  • Envoyer les courriels dans un thread séparé (quick fix) ou via une task queue (RQ/Celery)
  • Répondre immédiatement à l'utilisateur
  • Logger les erreurs d'envoi async

Quick fix (5 min)

# Au lieu de:
send_welcome_email(email, name)
# Faire:
threading.Thread(target=send_welcome_email, args=(email, name), daemon=True).start()

Localisation

backend/app.py — send_email(), send_welcome_email(), send_reset_email()
Appelé dans: register(), forgot_password()

## Problème `send_email()` utilise `smtplib.SMTP_SSL` de manière synchrone. Les endpoints `/api/register` et `/api/forgot-password` bloquent jusqu'à ce que le courriel soit envoyé (ou timeout SMTP). Si SMTP est lent → l'utilisateur attend plusieurs secondes. ## Solution - Envoyer les courriels dans un thread séparé (quick fix) ou via une task queue (RQ/Celery) - Répondre immédiatement à l'utilisateur - Logger les erreurs d'envoi async ## Quick fix (5 min) ```python # Au lieu de: send_welcome_email(email, name) # Faire: threading.Thread(target=send_welcome_email, args=(email, name), daemon=True).start() ``` ## Localisation `backend/app.py` — `send_email()`, `send_welcome_email()`, `send_reset_email()` Appelé dans: `register()`, `forgot_password()`
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
SlopVibe-org/nutri-food#10
No description provided.