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