Django Academy · บทเรียน

เหตุผลที่ต้องใช้ทาสก์เบื้องหลัง

ทำให้คำขอทำงานเร็วโดยเลื่อนงานที่ใช้เวลานานออกไป

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

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

ปัญหาคำขอที่ช้า

งานบางอย่างใช้เวลานาน เช่น การส่งอีเมล การปรับขนาดรูปภาพ หรือการเรียกใช้ API อื่น หาก view ทำงานเหล่านี้แบบทันที ผู้ใช้ก็ได้แต่มองไอคอนกำลังโหลด 🐢

คำขอควรทำงานอย่างรวดเร็ว

คำขอเว็บที่ดีควรส่งผลลัพธ์กลับมาภายในเสี้ยววินาที สิ่งใดก็ตามที่ใช้เวลาหลายวินาทีจะบล็อกเบราว์เซอร์และยึดผู้ปฏิบัติงานของ Django ไว้ ทั้งที่อาจให้บริการคนอื่นได้

ย้ายงานที่ช้าออกจากเส้นทางหลัก

วิธีแก้คือ background task: ส่งงานที่ช้าให้ผู้ปฏิบัติงานแยกต่างหาก คืน response ทันที แล้วปล่อยให้งานทำต่อโดยผู้ใช้ไม่ต้องเห็น

ตัวอย่างจริง

ลองนึกภาพว่าการสมัครสมาชิกส่งอีเมลต้อนรับ การทำสิ่งนี้ในมุมมองจะเพิ่มเวลาที่ช้าอีกไม่กี่วินาที แต่หากเข้าคิวแทน ผู้ใช้จะเห็นคำว่า "Welcome!" ทันที

def signup(request):
    user = create_user(request)
    send_welcome_email(user)  # slow, blocks the response
    return redirect("home")

คิวงานทำอะไร

task queue จะจัดเก็บงานไว้เป็นลำดับ กระบวนการเว็บของคุณใส่งานเข้าไป จากนั้นผู้ปฏิบัติงานแยกต่างหากจะหยิบงานไปทำตามเวลาของตนเอง

ผู้เล่นสามส่วน

คุณจะได้พบสามส่วน ได้แก่ producer (มุมมอง Django ของคุณ) ตัวกลาง (ตัวคิวเอง) และผู้ปฏิบัติงาน (กระบวนการที่ทำงานนั้น)

สั่งแล้วลืมได้เลย

งานเบื้องหลังส่วนใหญ่เป็นแบบ "สั่งแล้วลืม": คุณส่งงานเข้าคิวแล้วทำงานต่อ ผู้ใช้ไม่ต้องรอผลลัพธ์ และข้อผิดพลาดจะถูกลองใหม่เบื้องหลัง

ทำความรู้จัก Celery

Celery คือคิวงานที่ได้รับความนิยมสูงสุดสำหรับ Django โดยเรียกใช้ฟังก์ชัน Python ของคุณในกระบวนการผู้ปฏิบัติงาน ซึ่งแยกจากเซิร์ฟเวอร์เว็บโดยสิ้นเชิง

การเรียกแบบทำงานทันทีเทียบกับแบบไม่พร้อมกัน

การเรียกปกติจะทำงานทันทีและบล็อกการทำงาน ส่วนการเรียกงานแบบ async จะส่งงานเข้าคิวและคืนผลทันที ทำให้มุมมองทำงานต่อได้

send_welcome_email(user)         # runs now, blocks
send_welcome_email.delay(user_id)  # queued, returns instantly

งานที่เหมาะกับคิว

ตัวอย่างที่เหมาะสม ได้แก่ อีเมล การสร้าง PDF และรูปภาพ การเรียกใช้ API ของบุคคลที่สาม การส่งออกข้อมูล และทุกสิ่งที่ผู้ใช้ไม่จำเป็นต้องรอดูจนเสร็จ ✉️

ไม่ได้มีดีแค่ความเร็ว

งานเบื้องหลังยังเพิ่มความทนทานด้วย: หากผู้ให้บริการอีเมลหยุดทำงาน ผู้ปฏิบัติงานสามารถ retry ภายหลังแทนที่จะทำให้คำขอของผู้ใช้ล้มเหลว

ตรวจสอบอย่างรวดเร็ว

เหตุผลหลักที่ควรย้ายงานที่ช้าไปไว้ในงานเบื้องหลังคืออะไร

สรุป: งานเบื้องหลัง

งานที่ช้าจะบล็อกคำขอ task queue อย่าง Celery จะส่งงานให้ผู้ปฏิบัติงานแยกต่างหาก ทำให้มุมมองยังคงรวดเร็วและสามารถลองทำงานที่ล้มเหลวใหม่ได้ 🚀

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

เรียนรู้ Python ด้วย AI tutor — ฟรี

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

คอร์ส
30
บทเรียน
120

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

บทเรียน “เหตุผลที่ต้องใช้ทาสก์เบื้องหลัง” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “เหตุผลที่ต้องใช้ทาสก์เบื้องหลัง”

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

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

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

บทเรียน “เหตุผลที่ต้องใช้ทาสก์เบื้องหลัง” ใช้เวลานานแค่ไหน

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

ฉันเขียนและรันโค้ดในบทเรียน Django Academy นี้ได้ไหม

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

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

  1. เหตุผลที่ต้องใช้ทาสก์เบื้องหลัง
  2. การตั้งค่า Celery ด้วยโบรกเกอร์
  3. การเขียนและเรียกใช้ @shared_task
  4. งานตามกำหนดเวลาด้วย Celery Beat
← กลับไปที่ Django Academy