FastAPI Backend Development Bootcamp · บทเรียน

งานเบื้องหลังและคิวงาน

เรียนรู้การแยกงานที่ใช้เวลานานออกจากตัวจัดการคำขอด้วยงานเบื้องหลังของ FastAPI และคิวงานแบบกระจาย เช่น Celery

บทเรียน 4 จาก 413 ขั้นตอน

งานเบื้องหลังและคิวงาน เป็นบทเรียน FastAPI Backend Development Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน FastAPI Backend Development Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส FastAPI Backend Development Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ

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 " + to

Enqueuing 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=4

Tracking 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.

เริ่มต้นได้ฟรี

เรียนรู้ FastAPI Backend Development Bootcamp ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
21
บทเรียน
84

คำถามที่พบบ่อย

บทเรียน “งานเบื้องหลังและคิวงาน” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “งานเบื้องหลังและคิวงาน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส FastAPI Backend Development Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส FastAPI Backend Development Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “งานเบื้องหลังและคิวงาน”

เรียนรู้การแยกงานที่ใช้เวลานานออกจากตัวจัดการคำขอด้วยงานเบื้องหลังของ FastAPI และคิวงานแบบกระจาย เช่น Celery คุณปฏิบัติ FastAPI Backend Development Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน FastAPI Backend Development Bootcamp หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน FastAPI Backend Development Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “งานเบื้องหลังและคิวงาน” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน FastAPI Backend Development Bootcamp นี้ได้ไหม

ได้ บทเรียน FastAPI Backend Development Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. กลยุทธ์การแคชด้วย Redis
  2. การเข้าถึงฐานข้อมูลแบบอะซิงโครนัส
  3. การกระจายภาระและการตรวจสอบ
  4. งานเบื้องหลังและคิวงาน
← กลับไปที่ FastAPI Backend Development Bootcamp