MCP Academy · บทเรียน

ปิดระบบอย่างสะอาดและคืนทรัพยากร

ปิดพูลและไฟล์เมื่อเซิร์ฟเวอร์หยุดทำงาน

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

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

เหตุใดการปิดการทำงานจึงสำคัญ

การเชื่อมต่อที่เปิดทิ้งไว้โดยไม่ปิดจะทำให้ ทรัพยากร รั่วไหล: ซ็อกเก็ตสะสม กลุ่มการเชื่อมต่อยังถูกจอง และฐานข้อมูลยังคงทำงานหนัก

การเก็บกวาดอยู่หลัง yield

ทุกสิ่งหลัง yield ใน lifespan คือโค้ดปิดการทำงาน ซึ่งจะทำงานเมื่อมีคำสั่งให้เซิร์ฟเวอร์หยุด

async def lifespan(server):
    db = await connect()
    yield {"db": db}
    await db.close()

ปิดสิ่งที่คุณเปิดไว้

กฎทองคือ สำหรับทรัพยากรทุกอย่างที่คุณเปิดระหว่างเริ่มต้น ให้เพิ่ม close ที่สอดคล้องกันในขั้นตอนเก็บกวาด เพื่อไม่ให้มีสิ่งใดค้างอยู่

try / finally รับประกันการทำงาน

ครอบ yield ไว้ใน try / finally เพื่อให้การล้างทรัพยากรยังทำงาน แม้คำขอจะขัดข้องระหว่างดำเนินการ

async def lifespan(server):
    db = await connect()
    try:
        yield {"db": db}
    finally:
        await db.close()

ปล่อยให้งานที่กำลังทำอยู่เสร็จสิ้น

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

เขียนข้อมูลค้างให้เสร็จก่อนปิด

ไคลเอ็นต์บางตัวเก็บข้อมูลไว้ในบัฟเฟอร์ ดังนั้นให้ เขียนข้อมูลค้างออก ก่อนปิด เพื่อป้องกันไม่ให้ไบต์สุดท้ายที่ส่งสูญหาย

ปิดตามลำดับย้อนกลับ

เก็บกวาดสิ่งต่าง ๆ ตามลำดับ ย้อนกลับ จากตอนที่สร้าง เพื่อไม่ให้สิ่งหนึ่งถูกปิดในขณะที่สิ่งที่ต้องพึ่งพามันยังทำงานอยู่

อย่าปล่อยให้ค้างตอนออก

ควบคุมการล้างทรัพยากรที่ช้าด้วย การหมดเวลา เพื่อไม่ให้การเชื่อมต่อที่ค้างอยู่ขัดขวางไม่ให้เซิร์ฟเวอร์ปิดการทำงานได้

การล้างทรัพยากรที่ทำซ้ำได้อย่างปลอดภัย

ทำให้การเก็บกวาดเป็นแบบ ทำซ้ำได้โดยไม่เกิดผลเสีย: การปิดสิ่งเดิมสองครั้งควรไม่ก่อปัญหา เพราะการปิดการทำงานอาจถูกเรียกมากกว่าหนึ่งครั้ง

บันทึกเส้นทางการปิดการทำงาน

บรรทัดบันทึกเหตุการณ์ สั้น ๆ ต่อทรัพยากรที่ปิด จะเปลี่ยนการออกจากระบบแบบไร้ข้อมูลให้เป็นสิ่งที่คุณตรวจสอบแก้ไขได้จริงเมื่อเกิดปัญหา

ตัวจัดการบริบทจัดการให้คุณ

การครอบไคลเอ็นต์ด้วย async with จะปิดไคลเอ็นต์โดยอัตโนมัติ ให้ Python จัดการคืนทรัพยากร ทำให้คุณเขียนโค้ดล้างทรัพยากรเองน้อยลง

async def lifespan(server):
    async with connect() as db:
        yield {"db": db}

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

ใน lifespan ควรวางโค้ดที่คืนทรัพยากรไว้ที่ใด

สรุป: การปิดการทำงานอย่างเรียบร้อย

คุณคืนทรัพยากรหลังจาก yield ใช้ try/finally เพื่อป้องกันข้อผิดพลาด ปิดทรัพยากรตามลำดับย้อนกลับ และหลีกเลี่ยงการค้าง ตอนนี้เซิร์ฟเวอร์ของคุณเริ่มทำงานและหยุดทำงานได้อย่างเรียบร้อยแล้ว ✅

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

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

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

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

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

บทเรียน “ปิดระบบอย่างสะอาดและคืนทรัพยากร” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “ปิดระบบอย่างสะอาดและคืนทรัพยากร”

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

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

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

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

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

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

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

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

  1. ฮุกเริ่มต้นระบบตามอายุการใช้งาน
  2. แชร์สถานะผ่านบริบทแอป
  3. เข้าถึงออบเจ็กต์บริบท
  4. ปิดระบบอย่างสะอาดและคืนทรัพยากร
← กลับไปที่ MCP Academy