MCP Academy · บทเรียน

เครื่องมือแบบอะซิงโครนัสที่ไม่บล็อกการทำงาน

ใช้ I/O แบบอะซิงโครนัสเพื่อรองรับการเรียกจำนวนมากพร้อมกัน

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

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

เครื่องมือหนึ่งช้า ทุกคนต้องรอ

หากเครื่องมือทำงานช้าแบบพร้อมกัน เครื่องมือนั้นจะ บล็อกเซิร์ฟเวอร์ทั้งเครื่อง ทำให้การเรียกอื่น ๆ ต้องรอคิว ⏳

ความช้าส่วนใหญ่คือการรอ

เครื่องมือที่เรียกฐานข้อมูลหรือ API ใช้เวลาส่วนใหญ่ไปกับ I/O คือรอการตอบกลับแทนที่จะใช้ CPU

แบบอะซิงก์ช่วยคืนทรัพยากรให้เซิร์ฟเวอร์

การกำหนดให้เครื่องมือเป็น async ทำให้เซิร์ฟเวอร์จัดการคำขออื่นระหว่างรอได้ แทนที่จะว่างค้างอยู่กับการเรียกเดียว

กำหนดเครื่องมือด้วย async def

ประกาศตัวจัดการของคุณด้วย async def แล้ว FastMCP จะรอผลลัพธ์ให้ ทำให้ลูปเหตุการณ์ให้บริการงานอื่นไปพร้อมกันได้

@mcp.tool()
async def fetch(city: str) -> str:
    ...

ใช้ await กับการเรียก I/O

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

data = await client.get(url)
return data.text

ใช้ไลบรารีที่รองรับอะซิงก์โดยตรง

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

อย่าบล็อกลูปเหตุการณ์เด็ดขาด

การใช้ time.sleep ธรรมดาหรือลูปที่ใช้การประมวลผลมากจะ บล็อกคำขออื่นทั้งหมด ในโค้ดแบบอะซิงก์ การเรียกแบบบล็อกจะหยุดเซิร์ฟเวอร์อย่างเงียบ ๆ

ส่งต่องานที่ใช้ CPU มาก

สำหรับการคำนวณที่ใช้ CPU จริง ๆ ให้ส่งงานไปยัง เธรดด้วย asyncio.to_thread เพื่อให้ลูปเหตุการณ์ยังว่างสำหรับให้บริการการเรียกต่าง ๆ

result = await asyncio.to_thread(crunch, data)

เรียกใช้งานพร้อมกัน

ต้องการดึงข้อมูลหลายรายการพร้อมกันหรือไม่ asyncio.gather จะเรียกใช้งานสิ่งที่รอผลลัพธ์ได้พร้อมกัน ทำให้เสร็จเร็วกว่า await ทีละรายการมาก

a, b = await asyncio.gather(get(x), get(y))

เพิ่ม timeout ให้การรอผลลัพธ์

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

อะซิงก์รองรับการทำงานพร้อมกันในปริมาณมาก

ด้วย I/O แบบอะซิงก์ กระบวนการเดียวสามารถจัดการการเรียกที่กำลังทำงานอยู่หลายรายการพร้อมกัน ทำให้เซิร์ฟเวอร์ยัง ตอบสนองได้ดีแม้อยู่ภายใต้ภาระงานจริง

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

เหตุใด I/O แบบอะซิงก์จึงช่วยเซิร์ฟเวอร์ MCP ที่มีงานมากได้

สรุป: อย่าบล็อก

คุณทำให้เครื่องมือเป็น async ใช้ await กับ I/O ส่งต่องาน CPU และเรียกใช้งานพร้อมกันแล้ว ดังนั้นเครื่องมือที่ช้าหนึ่งรายการจึงไม่ทำให้เซิร์ฟเวอร์ทั้งเครื่องหยุดค้างอีกต่อไป 🚀

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

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

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

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

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

บทเรียน “เครื่องมือแบบอะซิงโครนัสที่ไม่บล็อกการทำงาน” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “เครื่องมือแบบอะซิงโครนัสที่ไม่บล็อกการทำงาน”

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

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

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

บทเรียน “เครื่องมือแบบอะซิงโครนัสที่ไม่บล็อกการทำงาน” ใช้เวลานานแค่ไหน

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

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

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

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

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