0Pricing
FastAPI Backend Development Bootcamp · Aula

Executando tarefas em segundo plano

Aprenda a transferir operações demoradas para tarefas em segundo plano, evitando o bloqueio da API e melhorando a experiência do usuário.

Executando tarefas em segundo plano é uma aula grátis de FastAPI Backend Development Bootcamp no CoddyKit. Esta é a aula 3 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.

Slow Endpoints & UX

Imagine your API needs to do something time-consuming, like sending an email or processing a large file, after a user request.

If your API waits for these tasks to finish before responding, the user experiences a slow, unresponsive application. This is called a blocking operation.

Bad user experience often leads to users abandoning your app!

Blocking vs. Non-Blocking APIs

Think of it like ordering food:

  • Blocking: You order, and the waiter waits for your food to be cooked, served, and eaten before taking the next order. (Terrible service!)
  • Non-Blocking: You order, the waiter takes your order to the kitchen, and immediately takes the next customer's order. Your food is prepared in the background.

We want our APIs to be non-blocking for a smooth user experience.

Meet FastAPI's BackgroundTasks

FastAPI provides a simple way to run operations in the 'background' after sending the HTTP response to the client. This is done using the BackgroundTasks dependency.

BackgroundTasks lets you add functions to a list that will be executed once the main API route has completed and the response has been delivered.

Injecting BackgroundTasks

To use background tasks, you simply declare a parameter with the type BackgroundTasks in your path operation function. FastAPI will automatically inject an instance of it.

  • Import BackgroundTasks from fastapi.
  • Declare a parameter, e.g., background_tasks: BackgroundTasks.
  • Use background_tasks.add_task() to schedule a function.

First Background Task Demo

Let's see a basic example. This task will print a message after the API response is sent. Remember to run uvicorn main:app --reload.

from fastapi import FastAPI, BackgroundTasks
import time

app = FastAPI()

def write_notification(email: str, message=""):
    time.sleep(2) # Simulate a long operation
    with open("log.txt", mode="a") as email_file:
        email_file.write(f"notification for {email}: {message}\n")
    print(f"Notification written for {email}")

@app.post("/send-notification/{email}")
async def send_notification(email: str, background_tasks: BackgroundTasks):
    background_tasks.add_task(write_notification, email, message="Welcome to CoddyKit!")
    return {"message": "Notification sent in background!"}

Understanding Execution Flow

It's crucial to understand when background tasks execute:

  • The path operation function runs.
  • The HTTP response is sent back to the client.
  • Then, the functions added to BackgroundTasks are executed.

This means the client doesn't wait for these tasks to complete, improving perceived performance.

Passing Arguments to Tasks

You can pass any arguments your background function needs to add_task(). The first argument is the function itself, followed by its arguments.

Arguments can be positional or keyword arguments, just like calling a regular Python function.

For example: background_tasks.add_task(my_function, arg1, arg2=value).

Simulating Email Send

A common scenario for background tasks is sending emails. This can take a few seconds, which would block your user if done directly in the API route.

Here, we simulate sending an email to multiple recipients. Try it from the /docs UI!

from fastapi import FastAPI, BackgroundTasks
import asyncio # For async sleep

app = FastAPI()

async def send_email_async(recipients: list, subject: str, body: str):
    print(f"Starting email send to {recipients}...")
    await asyncio.sleep(3) # Simulate network delay for sending email
    print(f"Email '{subject}' sent to {recipients} with body: '{body}'")

@app.post("/send-marketing-email/")
async def marketing_campaign(
    recipients: list[str],
    subject: str,
    body: str,
    background_tasks: BackgroundTasks
):
    # The actual email sending is offloaded
    background_tasks.add_task(send_email_async, recipients, subject, body)
    return {"message": "Marketing email campaign initiated in background!"}

Important Considerations

While powerful, BackgroundTasks are not for everything:

  • Short-lived: Best for tasks that complete relatively quickly (seconds to a few minutes).
  • No persistence: If your FastAPI process crashes, scheduled tasks are lost.
  • No retry: They don't have built-in retry mechanisms for failed tasks.
  • Not for heavy computation: For very long-running, CPU-intensive, or fault-tolerant tasks, consider dedicated task queues like Celery, Redis Queue (RQ), or similar.

Background Task Check

You've learned about using BackgroundTasks. Which of the following statements about FastAPI's BackgroundTasks is true?

Recap: Background Tasks

We've explored how FastAPI's BackgroundTasks help keep your API responsive:

  • They run after the HTTP response is sent.
  • They're great for non-critical, relatively short-lived operations like sending notifications.
  • You declare them as a dependency and use add_task().
  • For truly long-running or critical tasks, consider external task queues.

By using background tasks, you ensure a smoother experience for your API users!

Perguntas Frequentes

A aula “Executando tarefas em segundo plano” é grátis?

Sim — o texto completo de “Executando tarefas em segundo plano” é 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 “Executando tarefas em segundo plano”?

Aprenda a transferir operações demoradas para tarefas em segundo plano, evitando o bloqueio da API e melhorando a experiência do usuário. 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 3 de 4.

Quanto tempo leva a aula “Executando tarefas em segundo plano”?

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

  1. Revisão de Async/Await em Python
  2. FastAPI e operações assíncronas
  3. Executando tarefas em segundo plano
  4. WebSockets para comunicação em tempo real
← Voltar para FastAPI Backend Development Bootcamp