MCP Academy · Pelajaran

Menangani Permintaan Pembatalan

Hentikan pekerjaan dengan rapi saat klien membatalkannya.

Pelajaran 2 dari 413 langkah

Menangani Permintaan Pembatalan adalah pelajaran MCP Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar MCP Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus MCP Academy mencakup 4 pelajaran total.

Mengapa Pembatalan Ada

Pengguna mungkin menutup obrolan atau berubah pikiran saat alat yang lama sedang berjalan. MCP memungkinkan klien mengirim pembatalan agar pekerjaan yang sia-sia berhenti.

Notifikasi cancelled

Klien memberi sinyal ini dengan pesan notifications/cancelled yang menyebutkan requestId yang ingin dihentikan. Pesan ini dikirim tanpa menunggu balasan dan tidak memiliki jawaban.

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

Ini Hanya Sebuah Permintaan

Hanya permintaan yang sedang berlangsung yang dapat dibatalkan, berdasarkan requestId-nya. Notifikasi, yang tidak memiliki ID, tidak pernah dapat dibatalkan.

Pembatalan Bersifat Upaya Terbaik

Pembatalan adalah permintaan sopan, bukan penghentian paksa. Pekerjaan Anda mungkin sudah hampir selesai, jadi perlakukan pembatalan sebagai petunjuk upaya terbaik untuk mengakhiri pekerjaan.

asyncio Menangani Pengkabelan

Dalam SDK Python, pembatalan tiba sebagai asyncio.CancelledError yang ditimbulkan di dalam alat yang sedang Anda tunggu. Biasanya Anda tidak perlu memeriksa penanda sendiri.

import asyncio
# CancelledError is raised at the next await point

Biarkan Menyebar

Perilaku benar yang paling sederhana adalah membiarkan CancelledError menyebar ke atas. Kerangka kerja kemudian menghentikan tugas dan melewati pengiriman hasil normal.

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

Bersihkan Saat Dibatalkan

Jika alat Anda memegang berkas atau kunci, bungkus alat tersebut agar pembatalan tetap melepaskan sumber daya. try/finally menjamin pembersihan berjalan saat keluar.

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

Jangan Menelannya

Jangan pernah menangkap CancelledError lalu diam-diam melanjutkan proses. Itu menggagalkan tujuan pembatalan dan membuat klien mengira pekerjaan telah dihentikan.

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

Tidak Ada Respons Setelah Pembatalan

Setelah suatu permintaan dibatalkan, jangan kirim hasil atau error untuk permintaan tersebut. Klien sudah melanjutkan proses dan respons apa pun yang terlambat akan diabaikan begitu saja.

Bebaskan Anggaran

Menangani pembatalan dengan cepat membebaskan CPU, jaringan, dan token model. Server yang segera berhenti merupakan warga yang baik dalam agen yang sibuk.

Periksa di Titik Alami

Untuk perulangan CPU yang ketat tanpa await, sisipkan await asyncio.sleep(0) singkat agar pembatalan berkesempatan terjadi di antara setiap iterasi.

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

Pemeriksaan Singkat

Periksa bagaimana pembatalan muncul dalam tool MCP Python.

Ringkasan: Pembatalan

Anda telah melihat notifikasi dibatalkan, alasan pembatalan bersifat upaya terbaik, serta cara membiarkan CancelledError diteruskan sambil melakukan pembersihan. Kerja bagus!

Gratis untuk memulai

Belajar Python dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
30
Pelajaran
120

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Menangani Permintaan Pembatalan” gratis?

Ya — teks lengkap “Menangani Permintaan Pembatalan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus MCP Academy, upgrade ke CoddyKit PRO. Kursus MCP Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Menangani Permintaan Pembatalan”?

Hentikan pekerjaan dengan rapi saat klien membatalkannya. Kamu berlatih MCP Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai MCP Academy?

Tidak diperlukan pengalaman sebelumnya. MCP Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Menangani Permintaan Pembatalan” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran MCP Academy ini?

Ya. Setiap pelajaran MCP Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Mengirim Kemajuan untuk Tugas Panjang
  2. Menangani Permintaan Pembatalan
  3. Logging Terstruktur ke Klien
  4. Mengatur Level Log Saat Runtime
← Kembali ke MCP Academy