MCP Academy · Lektion

Abbruchanfragen verarbeiten

Beenden Sie die Arbeit sauber, wenn der Client sie abbricht.

Lektion 2 von 413 Schritte

Abbruchanfragen verarbeiten ist eine kostenlose MCP Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des MCP Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der MCP Academy-Kurs umfasst insgesamt 4 Lektionen.

Warum es Stornierungen gibt

Ein Benutzer kann einen Chat schließen oder seine Meinung ändern, während ein lang laufendes Tool arbeitet. MCP ermöglicht es dem Client, eine Stornierung zu senden, damit unnötige Arbeit beendet wird.

Die cancelled-Benachrichtigung

Der Client signalisiert dies mit einer notifications/cancelled-Nachricht, die die zu stoppende requestId angibt. Sie wird ohne Antwort gesendet.

{"method": "notifications/cancelled",
 "params": {"requestId": 7, "reason": "user aborted"}}

Es handelt sich einfach um eine Anfrage

Nur eine laufende Anfrage kann storniert werden, und zwar anhand ihrer requestId. Benachrichtigungen ohne ID können niemals storniert werden.

Stornierung erfolgt nach bestem Bemühen

Eine Stornierung ist eine höfliche Bitte, kein sofortiges Beenden. Ihre Arbeit könnte bereits abgeschlossen werden, behandeln Sie sie daher als best-effort-Hinweis zum kontrollierten Beenden.

asyncio übernimmt die Verdrahtung

Im Python SDK trifft eine Stornierung als innerhalb Ihres wartenden Tools ausgelöster asyncio.CancelledError ein. Normalerweise müssen Sie nicht selbst ein Flag abfragen.

import asyncio
# CancelledError is raised at the next await point

Weiterreichen lassen

Das einfachste korrekte Verhalten besteht darin, CancelledError nach oben weiterlaufen zu lassen. Das Framework beendet dann die Aufgabe und überspringt das Senden eines normalen Ergebnisses.

@mcp.tool()
async def crunch(ctx: Context) -> str:
    for item in items:
        await heavy(item)  # cancel lands here

Bei einer Stornierung aufräumen

Wenn Ihr Tool eine Datei oder Sperre hält, kapseln Sie den Code so, dass eine Stornierung trotzdem Ressourcen freigibt. Ein try/finally-Block garantiert, dass die Bereinigung beim Verlassen ausgeführt wird.

try:
    await do_work()
finally:
    handle.close()

Nicht abfangen und verschlucken

Fangen Sie CancelledError niemals ab, um anschließend stillschweigend weiterzuarbeiten. Dadurch wird der gesamte Zweck vereitelt und der Client glaubt weiterhin, die Arbeit sei beendet worden.

# Anti-pattern:
# except asyncio.CancelledError:
#     pass  # do NOT do this

Keine Antwort nach einer Stornierung

Nachdem eine Anfrage storniert wurde, dürfen Sie dafür kein Ergebnis und keinen Fehler senden. Der Client hat weitergemacht, und jede verspätete Antwort wird einfach ignoriert.

Ressourcenbudget freigeben

Wenn Sie eine Stornierung schnell respektieren, geben Sie CPU-, Netzwerk- und Modell-Tokens frei. Ein Server, der umgehend stoppt, verhält sich in einem ausgelasteten Agenten wie ein guter Bürger.

An natürlichen Punkten prüfen

Fügen Sie bei engen CPU-Schleifen ohne await-Ausdrücke ein kurzes await asyncio.sleep(0) ein, damit die Stornierung zwischen zwei Iterationen verarbeitet werden kann.

for chunk in chunks:
    crunch(chunk)
    await asyncio.sleep(0)

Kurze Überprüfung

Prüfen Sie, wie eine Stornierung in einem Python-MCP-Tool sichtbar wird.

Rückblick: Stornierung

Sie haben die cancelled-Benachrichtigung kennengelernt, erfahren, warum Stornierungen nach bestem Bemühen erfolgen, und gelernt, wie Sie CancelledError beim Aufräumen weiterreichen lassen. Gut gemacht!

Kostenlos starten

Lerne Python mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
30
Lektionen
120

Häufig gestellte Fragen

Ist die Lektion „Abbruchanfragen verarbeiten“ kostenlos?

Ja — der vollständige Text von „Abbruchanfragen verarbeiten“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des MCP Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der MCP Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Abbruchanfragen verarbeiten“?

Beenden Sie die Arbeit sauber, wenn der Client sie abbricht. Du übst MCP Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um MCP Academy zu starten?

Keine Vorkenntnisse erforderlich. MCP Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Abbruchanfragen verarbeiten“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser MCP Academy-Lektion Code schreiben und ausführen?

Ja. Jede MCP Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Fortschritt bei langen Aufgaben senden
  2. Abbruchanfragen verarbeiten
  3. Strukturiertes Logging an den Client
  4. Log-Level zur Laufzeit festlegen
← Zurück zu MCP Academy