MCP Academy · Pelajaran

Mengendalikan Permintaan Pembatalan

Hentikan kerja dengan kemas apabila klien membatalkannya.

Pelajaran 2 daripada 413 langkah

Mengendalikan Permintaan Pembatalan ialah pelajaran MCP Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran MCP Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus MCP Academy merangkumi sejumlah 4 pelajaran.

Mengapa Pembatalan Wujud

Pengguna mungkin menutup sembang atau berubah fikiran ketika alat yang panjang sedang berjalan. MCP membolehkan klien menghantar pembatalan supaya kerja yang sia-sia dihentikan.

Pemberitahuan cancelled

Klien menandakan perkara ini dengan mesej notifications/cancelled yang menamakan requestId yang ingin dihentikannya. Ia dihantar tanpa menunggu balasan dan tidak mempunyai balasan.

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

Ia Hanyalah Permintaan

Hanya permintaan yang sedang berjalan boleh dibatalkan, dipadankan berdasarkan requestIdnya. Pemberitahuan yang tidak mempunyai id tidak boleh dibatalkan.

Pembatalan ialah Usaha Terbaik

Pembatalan ialah permintaan berhemah, bukannya hentian paksa. Kerja anda mungkin sudah hampir selesai, jadi anggap ia sebagai petunjuk usaha terbaik untuk menghentikan kerja secara beransur-ansur.

asyncio Menguruskan Penyambungan

Dalam SDK Python, pembatalan tiba sebagai asyncio.CancelledError yang ditimbulkan di dalam alat yang sedang anda tunggu. Biasanya anda tidak perlu menyemak bendera sendiri.

import asyncio
# CancelledError is raised at the next await point

Biarkan Ia Mengalir ke Atas

Tingkah laku betul yang paling mudah ialah membiarkan CancelledError mengalir ke atas. Rangka kerja kemudian menghentikan tugas dan tidak menghantar hasil biasa.

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

Bersihkan Semasa Pembatalan

Jika alat anda memegang fail atau kunci, bungkusnya supaya pembatalan tetap melepaskan sumber. try/finally menjamin pembersihan dijalankan semasa keluar.

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

Jangan Menelannya

Jangan sekali-kali tangkap CancelledError lalu teruskan secara senyap. Tindakan itu menggagalkan tujuan pembatalan dan menyebabkan klien menyangka kerja tersebut telah dihentikan.

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

Tiada Respons Selepas Pembatalan

Selepas sesuatu permintaan dibatalkan, jangan hantar hasil atau ralat untuknya. Klien telah beralih kepada perkara lain dan sebarang respons yang lewat akan diabaikan begitu sahaja.

Bebaskan Belanjawan

Mematuhi pembatalan dengan pantas membebaskan CPU, rangkaian dan token model. Pelayan yang berhenti dengan segera ialah warganegara yang baik dalam ejen yang sibuk.

Semak pada Titik Semula Jadi

Untuk gelung CPU yang ketat tanpa await, selitkan await asyncio.sleep(0) yang singkat supaya pembatalan berpeluang berlaku antara setiap lelaran.

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

Semakan Pantas

Semak cara pembatalan muncul dalam alat MCP Python.

Imbas Kembali: Pembatalan

Anda telah melihat pemberitahuan cancelled, sebab pembatalan merupakan usaha terbaik, dan cara membenarkan CancelledError disebarkan sambil melakukan pembersihan. Syabas!

Percuma untuk bermula

Pelajari Python dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
30
Pelajaran
120

Soalan Lazim

Adakah pelajaran “Mengendalikan Permintaan Pembatalan” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran MCP Academy, termasuk “Mengendalikan Permintaan Pembatalan”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus MCP Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Mengendalikan Permintaan Pembatalan”?

Hentikan kerja dengan kemas apabila klien membatalkannya. Anda berlatih MCP Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan MCP Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran MCP Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.

Berapa lamakah pelajaran “Mengendalikan Permintaan Pembatalan” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran MCP Academy ini?

Ya. Setiap pelajaran MCP Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Menghantar Kemajuan untuk Tugas Panjang
  2. Mengendalikan Permintaan Pembatalan
  3. Pengelogan Berstruktur kepada Klien
  4. Menetapkan Tahap Log semasa Masa Jalan
← Kembali ke MCP Academy