เหตุผลที่ต้องใช้ทาสก์เบื้องหลัง
ทำให้คำขอทำงานเร็วโดยเลื่อนงานที่ใช้เวลานานออกไป
เหตุผลที่ต้องใช้ทาสก์เบื้องหลัง เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เหตุผลที่ต้องใช้ทาสก์เบื้องหลัง
- การตั้งค่า Celery ด้วยโบรกเกอร์
- การเขียนและเรียกใช้ @shared_task
- งานตามกำหนดเวลาด้วย Celery Beat