ส่งความคืบหน้าสำหรับงานที่ใช้เวลานาน
สตรีมการอัปเดตเปอร์เซ็นต์ความคืบหน้าไปยังไคลเอ็นต์
ส่งความคืบหน้าสำหรับงานที่ใช้เวลานาน เป็นบทเรียน MCP Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน MCP Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส MCP Academy มีบทเรียนทั้งหมด 4 บทเรียน
เหตุใดความคืบหน้าจึงสำคัญ
เมื่อเครื่องมือใช้เวลาหลายวินาทีหรือหลายนาที ไคลเอ็นต์ไม่ควรหยุดค้างเฉย ๆ MCP ช่วยให้เซิร์ฟเวอร์ส่งการอัปเดตความคืบหน้า เพื่อให้ผู้ใช้เห็นว่างานกำลังดำเนินไป
โทเค็นความคืบหน้า
ไคลเอ็นต์เลือกเข้าร่วมโดยแนบ progressToken มากับคำขอ หากไม่มีโทเค็นนี้ เซิร์ฟเวอร์ของคุณจะข้ามการส่งการอัปเดต
เข้าถึงวัตถุบริบท
ใน Python SDK เครื่องมือจะได้รับวัตถุบริบท ซึ่งเป็นช่องทางให้คุณสื่อสารกลับไปยังไคลเอ็นต์ระหว่างการเรียกใช้ รวมถึงการรายงานความคืบหน้า
from mcp.server.fastmcp import Context
@mcp.tool()
async def crunch(n: int, ctx: Context) -> str:
return "done"เรียก report_progress
หากต้องการส่งการอัปเดต ให้เรียก ctx.report_progress การเรียกแต่ละครั้งจะแจ้งไคลเอ็นต์ว่างานดำเนินไปถึงไหนแล้ว
await ctx.report_progress(progress=3, total=10)ความคืบหน้าและยอดรวม
อาร์กิวเมนต์ total คือจุดสิ้นสุดของงาน ไคลเอ็นต์สามารถนำความคืบหน้าหารด้วยยอดรวมเพื่อแสดงแถบเปอร์เซ็นต์ที่ทำเสร็จให้ผู้ใช้
await ctx.report_progress(progress=5, total=10) # 50%อัปเดตภายในลูป
จุดที่เหมาะสมในการรายงานคือภายในลูปการทำงาน หลังประมวลผลแต่ละส่วนเสร็จ ให้ส่งการอัปเดตหนึ่งครั้งเพื่อให้แถบเพิ่มขึ้นอย่างสม่ำเสมอ
for i, item in enumerate(items):
process(item)
await ctx.report_progress(i + 1, len(items))รายงานความคืบหน้าโดยไม่มียอดรวม
บางครั้งคุณไม่สามารถทราบยอดรวมล่วงหน้าได้ คุณอาจละเว้นยอดรวม แล้วไคลเอ็นต์จะแสดงตัวหมุนแบบไม่ทราบกำหนดสิ้นสุดแทนแถบที่ระบุค่าได้แน่นอน
await ctx.report_progress(progress=42) # total unknownเพิ่มข้อความที่ไม่จำเป็นต้องมี
SDK หลายรุ่นอนุญาตให้คุณแนบข้อความสั้น ๆ ไปกับการเรียกความคืบหน้าได้ เช่น “กำลังจัดทำดัชนีไฟล์” เพื่อให้ผู้ใช้เข้าใจบริบทได้ง่าย
await ctx.report_progress(2, 5, message="Fetching pages")นี่คือการแจ้งเตือน
ความคืบหน้าจะส่งในรูปแบบการแจ้งเตือนของ JSON-RPC จึงไม่มีคำตอบกลับและไม่บล็อกการทำงาน เครื่องมือของคุณยังคงทำงานต่อขณะที่การอัปเดตถูกส่งออกไป
รักษาจำนวนการอัปเดตให้เหมาะสม
อย่าส่งการอัปเดตเล็ก ๆ นับพันครั้งให้ไคลเอ็นต์ รายงานเมื่อถึงขั้นตอนที่มีความหมาย เพื่อให้การส่งข้อมูลยังมีประโยชน์และใช้ทรัพยากรน้อย
ความคืบหน้าพร้อมผลลัพธ์
การแจ้งเตือนความคืบหน้าแยกจากค่าส่งกลับของเครื่องมือ คุณส่งการอัปเดตระหว่างทำงาน แล้วส่งผลลัพธ์สุดท้ายกลับเมื่อเสร็จสิ้น
await ctx.report_progress(10, 10)
return "index built"ตรวจสอบอย่างรวดเร็ว
ทดสอบความเข้าใจของคุณเกี่ยวกับการเริ่มรายงานความคืบหน้า
สรุป: ความคืบหน้า
คุณได้เรียนรู้การเรียก ctx.report_progress พร้อมความคืบหน้าและยอดรวม การวนซ้ำเพื่อส่งการอัปเดต และการให้ไคลเอ็นต์แสดงแถบแบบทันที ทำได้ดีมาก
คำถามที่พบบ่อย
บทเรียน “ส่งความคืบหน้าสำหรับงานที่ใช้เวลานาน” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ส่งความคืบหน้าสำหรับงานที่ใช้เวลานาน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส MCP Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส MCP Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ส่งความคืบหน้าสำหรับงานที่ใช้เวลานาน”
สตรีมการอัปเดตเปอร์เซ็นต์ความคืบหน้าไปยังไคลเอ็นต์ คุณปฏิบัติ MCP Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน MCP Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน MCP Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “ส่งความคืบหน้าสำหรับงานที่ใช้เวลานาน” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน MCP Academy นี้ได้ไหม
ได้ บทเรียน MCP Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ส่งความคืบหน้าสำหรับงานที่ใช้เวลานาน
- จัดการคำขอยกเลิก
- การบันทึกแบบมีโครงสร้างไปยังไคลเอ็นต์
- ตั้งระดับบันทึกขณะทำงาน