📊 Capítulo 13: Background Tasks Nativas
Especialização Backend com Python & FastAPI
🗺️ O Funcionamento das BackgroundTasks do Starlette/FastAPI
sequenceDiagram
autonumber
actor C as Cliente HTTP
participant API as FastAPI Endpoint
participant BG as BackgroundTasks Runner
participant SMTP as Servidor de E-mail / Log
C->>API: POST /pedidos/123/checkout
API->>API: Processa transação no banco (50 ms)
API->>BG: tasks.add_task(enviar_email_confirmacao, "cliente@email.com")
API-->>C: Retorna HTTP 202 Accepted Imediatamente! ⚡
Note over BG,SMTP: A conexão HTTP já foi encerrada com o cliente
BG->>SMTP: Conecta e envia e-mail em background (1.200 ms)
🎯 Slide 1: Quando Usar as BackgroundTasks Nativas?
- Casos Ideais:
- Envio de e-mails transacionais e notificações simples.
- Gravação de logs de auditoria não críticos.
-
Limpeza de arquivos temporários após download.
- Vantagem: Zero dependência de workers externos ou brokers como Celery/RabbitMQ.
🎯 Slide 2: Exemplo de Implementação Simples e Elegante
from fastapi import BackgroundTasks, APIRouter
router = APIRouter()
def enviar_notificacao(email: str, mensagem: str):
# Simula chamada de rede lenta
time.sleep(2)
print(f"E-mail enviado para {email}: {mensagem}")
@router.post("/notificar")
async def disparar_notificacao(email: str, background_tasks: BackgroundTasks):
background_tasks.add_task(enviar_notificacao, email, "Seu pedido foi faturado!")
return {"status": "Notificação agendada com sucesso"}
🎯 Slide 3: Limitações Importantes
-
Processo em Memória: Se o servidor for reiniciado antes da tarefa terminar, ela será perdida (não é persistente).
- Tarefas Pesadas: Para processamento de vídeo, relatórios de horas e pipelines de ML, utilize Celery com Redis (Capítulo 14).
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim