रद्दीकरण अनुरोध सँभालें
क्लाइंट द्वारा रद्द करने पर काम को सही ढंग से रोकें।
रद्दीकरण अनुरोध सँभालें, CoddyKit पर MCP Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह MCP Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। MCP Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
रद्दीकरण क्यों मौजूद है
लंबा चलने वाला tool काम कर रहा हो, तब उपयोगकर्ता चैट बंद कर सकता है या अपना विचार बदल सकता है। MCP क्लाइंट को रद्दीकरण भेजने देता है, ताकि व्यर्थ काम रुक सके।
रद्दीकरण की सूचना
क्लाइंट इसे notifications/cancelled संदेश के माध्यम से बताता है, जिसमें उस requestId का नाम होता है जिसे वह रोकना चाहता है। यह भेजकर भूल जाने वाली सूचना है, जिसका कोई उत्तर नहीं होता।
{"method": "notifications/cancelled",
"params": {"requestId": 7, "reason": "user aborted"}}यह केवल एक अनुरोध है
केवल चल रहे अनुरोध को उसके requestId से मिलाकर रद्द किया जा सकता है। जिन सूचनाओं की कोई id नहीं होती, उन्हें कभी रद्द नहीं किया जा सकता।
रद्दीकरण सर्वोत्तम प्रयास के आधार पर होता है
रद्दीकरण विनम्र अनुरोध है, तुरंत समाप्त करने का आदेश नहीं। आपका काम पहले ही पूरा होने वाला हो सकता है, इसलिए इसे धीरे-धीरे रुकने के लिए सर्वोत्तम-प्रयास संकेत मानें।
asyncio जोड़ने का काम करता है
Python SDK में रद्दीकरण आपके प्रतीक्षारत tool के भीतर उठाए गए asyncio.CancelledError के रूप में आता है। आम तौर पर आपको स्वयं किसी ध्वज की जाँच करने की आवश्यकता नहीं होती।
import asyncio
# CancelledError is raised at the next await pointइसे आगे जाने दें
सबसे सरल सही व्यवहार है कि CancelledError को ऊपर तक जाने दें। इसके बाद ढाँचा कार्य को रोक देता है और सामान्य परिणाम भेजना छोड़ देता है।
@mcp.tool()
async def crunch(ctx: Context) -> str:
for item in items:
await heavy(item) # cancel lands hereरद्दीकरण पर सफ़ाई करें
यदि आपका tool कोई फ़ाइल या लॉक पकड़े हुए है, तो उसे इस तरह लपेटें कि रद्दीकरण पर भी संसाधन मुक्त हो जाएँ। try/finally सुनिश्चित करता है कि बाहर निकलते समय सफ़ाई चले।
try:
await do_work()
finally:
handle.close()इसे दबाएँ नहीं
कभी भी CancelledError को पकड़कर चुपचाप काम जारी न रखें। इससे रद्द करने का पूरा उद्देश्य विफल हो जाता है और क्लाइंट को लगता रहता है कि काम रोक दिया गया है।
# Anti-pattern:
# except asyncio.CancelledError:
# pass # do NOT do thisरद्द करने के बाद कोई उत्तर नहीं
किसी अनुरोध को रद्द किए जाने के बाद उसके लिए परिणाम या त्रुटि न भेजें। क्लाइंट आगे बढ़ चुका है और देर से आने वाले किसी भी उत्तर को सीधे अनदेखा कर देता है।
बजट मुक्त करें
रद्दीकरण का तुरंत सम्मान करने से CPU, नेटवर्क और मॉडल टोकन मुक्त होते हैं। व्यस्त एजेंट में तुरंत रुक जाने वाला सर्वर एक अच्छा सहभागी होता है।
स्वाभाविक बिंदुओं पर जाँच करें
बिना await वाले CPU-प्रधान लूप में, पुनरावृत्तियों के बीच रद्दीकरण को प्रभावी होने का अवसर देने के लिए बीच-बीच में छोटा-सा await asyncio.sleep(0) डालें।
for chunk in chunks:
crunch(chunk)
await asyncio.sleep(0)त्वरित जाँच
जाँचें कि Python MCP टूल में रद्दीकरण किस तरह दिखाई देता है।
पुनरावलोकन: रद्दीकरण
आपने रद्द किए गए संकेत, रद्दीकरण के सर्वोत्तम-प्रयास होने का कारण, और सफाई करते हुए CancelledError को आगे प्रसारित करने का तरीका देखा। बहुत अच्छा!
एआई शिक्षक के साथ Python सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 30
- पाठ
- 120
अक्सर पूछे जाने वाले प्रश्न
क्या “रद्दीकरण अनुरोध सँभालें” पाठ निःशुल्क है?
हाँ — MCP Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “रद्दीकरण अनुरोध सँभालें” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। MCP Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“रद्दीकरण अनुरोध सँभालें” में मैं क्या सीखूँगा?
क्लाइंट द्वारा रद्द करने पर काम को सही ढंग से रोकें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ MCP Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या MCP Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर MCP Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“रद्दीकरण अनुरोध सँभालें” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस MCP Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर MCP Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- लंबे कार्यों की प्रगति भेजें
- रद्दीकरण अनुरोध सँभालें
- क्लाइंट को संरचित लॉगिंग
- रनटाइम पर लॉग स्तर सेट करें