MCP Academy · レッスン

安全に失敗させ、ハングさせない

タイムアウトと未処理の例外に備えます。

レッスン 4/413 ステップ

「安全に失敗させ、ハングさせない」はCoddyKit上の無料MCP Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはMCP Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 MCP Academyコースには全4レッスンが含まれています。

ハングするツールは失敗するツールより悪い

明確にエラーを返すツールなら、モデルは先に進めます。hangsするツールは呼び出し全体を停止させるため、必ず適切な時間内に終了するよう設計してください。

予期しない事態を捕捉する

危険な処理をラップし、予期しない例外をクラッシュではなく正常なerrorに変えます。サーバーは稼働し続け、モデルは何が失敗したかを理解できます。

try:
    data = parse(raw)
except Exception as e:
    raise ValueError("could not parse input")

必ずタイムアウトを設定する

ネットワークや外部への呼び出しにはtimeoutが必要です。設定しないと、上流の処理が遅いだけでツールがいつまでも開いたままになり、クライアントが停止するおそれがあります。

import httpx
r = httpx.get(url, timeout=10.0)

I/O には Async を優先する

Async ツールを使うと、遅いrequestを待っている間も他の処理をブロックせず、サーバーはその間に別の呼び出しを処理できます。

@mcp.tool()
async def fetch(url: str) -> str:
    async with httpx.AsyncClient() as c:
        r = await c.get(url, timeout=10)

キャンセルに対応する

クライアントがキャンセルしたら、すぐに停止します。cancellationを尊重することでリソースが解放され、誰も待っていない処理を続けずに済みます。

ループと再試行に上限を設ける

ループや再試行には上限を設定します。失敗している API に対する無制限のretryは永遠に続くおそれがあるため、最大試行回数を設定し、適切に諦めます。

for attempt in range(3):
    if try_call():
        break

開いたものを解放する

with ブロックまたは finally を使い、関数の途中でエラーが発生しても、ファイルや接続が必ずcloseされるようにします。

with open(path) as f:
    return f.read()

適切に機能を縮退させる

処理の一部が失敗したときは、何も返さずに終わるのではなく、注記を添えて取得できたものを返します。partialな結果でも、モデルの判断に役立ちます。

サーバー側に失敗を記録する

詳細な情報はlogsにすべて記録し、モデルには安全な概要だけを送ります。内部情報を漏らさずにデバッグできます。

1回のクラッシュでサーバー全体を止めない

1回の不正な呼び出しでプロセス全体が停止してはいけません。ツールごとにfailuresを分離すれば、他のすべての機能をクライアントから利用できます。

必ず何かを返す

ツール内のどの経路も、成功またはエラーのresponseで終了する必要があります。何も返さないとクライアントが待ち続け、モデルも停止してしまいます。

クイックチェック

ツールで外部呼び出しにタイムアウトを追加する主な理由は何ですか。

まとめ

すぐに失敗させ、決してhangさせないでください。予期しない事態を捕捉し、タイムアウトを設定し、再試行に上限を設け、リソースを解放し、安全にログを記録し、必ず応答を返します。✅

無料で開始

AI チューターと学ぶ Python — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
30
レッスン
120

よくある質問

「安全に失敗させ、ハングさせない」レッスンは無料ですか?

はい。「安全に失敗させ、ハングさせない」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、MCP Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 MCP Academyコースには全4レッスンが含まれています。

「安全に失敗させ、ハングさせない」で何を学びますか?

タイムアウトと未処理の例外に備えます。 ブラウザで直接実行するハンズオンコードでMCP Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

MCP Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのMCP Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「安全に失敗させ、ハングさせない」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このMCP Academyレッスンでコードを書いて実行できますか?

はい。すべてのMCP Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. モデルが認識できるツールエラー
  2. プロトコルエラーとツールの失敗
  3. 実行前に入力を検証する
  4. 安全に失敗させ、ハングさせない
← MCP Academyに戻る