Tarefas em segundo plano e filas de trabalhos
Aprenda a transferir trabalhos demorados dos manipuladores de solicitações usando tarefas em segundo plano do FastAPI e filas de trabalhos distribuídas, como o Celery.
Tarefas em segundo plano e filas de trabalhos é uma aula grátis de FastAPI Backend Development Bootcamp no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de FastAPI Backend Development Bootcamp, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de FastAPI Backend Development Bootcamp inclui 4 aulas no total.
Partes desta aula ainda não foram traduzidas e aparecem em inglês.
Why Offload Work?
Some work, like sending email, generating reports, or processing images, is too slow to do inside a request.
Making the user wait hurts latency. Instead, respond fast and do the heavy work in the background.
FastAPI BackgroundTasks
FastAPI ships a lightweight BackgroundTasks tool for work that should run after the response is sent.
from fastapi import BackgroundTasks
def write_log(msg: str):
with open("log.txt", "a") as f:
f.write(msg)
@app.post("/signup")
def signup(bg: BackgroundTasks):
bg.add_task(write_log, "new user")
return {"ok": True}Limits of BackgroundTasks
BackgroundTasks runs in the same process. If the server restarts, the work is lost, and it cannot scale across machines.
For durable, distributed work you need a real job queue.
What is a Job Queue?
A job queue stores tasks in a broker such as Redis or RabbitMQ. Separate worker processes pull tasks and execute them, independent of the web server.
Defining a Celery Task
Celery is the most common Python job queue. You decorate a function as a task.
from celery import Celery
celery_app = Celery("tasks", broker="redis://localhost:6379/0")
@celery_app.task
def send_email(to: str):
# slow work here
return "sent to " + toEnqueuing from FastAPI
Trigger the task with .delay(); it returns immediately while a worker runs it later.
@app.post("/notify")
def notify(email: str):
send_email.delay(email)
return {"queued": True}Running Workers
Workers are separate processes you scale independently of the web tier.
celery -A tasks worker --loglevel=info --concurrency=4Tracking Task Results
With a result backend, you can store and query task status and outcomes.
result = send_email.delay("a@b.com")
print(result.id, result.status)Retries and Reliability
Job queues can automatically retry failed tasks with backoff, something in-process tasks cannot do.
@celery_app.task(bind=True, max_retries=3)
def process(self, item):
try:
do_work(item)
except Exception as exc:
raise self.retry(exc=exc, countdown=10)Scheduling Periodic Jobs
Celery Beat runs tasks on a schedule, like nightly cleanups or hourly syncs.
celery_app.conf.beat_schedule = {
"cleanup": {"task": "tasks.cleanup", "schedule": 3600.0}
}Idempotent Tasks
Because a queued task may be retried, design tasks to be idempotent so running them twice causes no harm, for example by checking if the email was already sent.
Quick Check
Test your background work knowledge.
Recap
You learned to keep request handlers fast:
- BackgroundTasks handles simple in-process after-response work
- Job queues like Celery give durable, distributed, retryable tasks
- Scale workers independently and schedule periodic jobs
Offloading slow work keeps your API responsive under load.
Perguntas Frequentes
A aula “Tarefas em segundo plano e filas de trabalhos” é grátis?
Sim — o texto completo de “Tarefas em segundo plano e filas de trabalhos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de FastAPI Backend Development Bootcamp, atualize para CoddyKit PRO. O curso de FastAPI Backend Development Bootcamp inclui 4 aulas no total.
O que vou aprender em “Tarefas em segundo plano e filas de trabalhos”?
Aprenda a transferir trabalhos demorados dos manipuladores de solicitações usando tarefas em segundo plano do FastAPI e filas de trabalhos distribuídas, como o Celery. Você pratica FastAPI Backend Development Bootcamp com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar FastAPI Backend Development Bootcamp?
Nenhuma experiência prévia é necessária. FastAPI Backend Development Bootcamp no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Tarefas em segundo plano e filas de trabalhos”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de FastAPI Backend Development Bootcamp?
Sim. Cada aula de FastAPI Backend Development Bootcamp inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Estratégias de cache com Redis
- Acesso assíncrono ao banco de dados
- Balanceamento de carga e monitoramento
- Tarefas em segundo plano e filas de trabalhos