安全に失敗させ、ハングさせない
タイムアウトと未処理の例外に備えます。
「安全に失敗させ、ハングさせない」は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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- モデルが認識できるツールエラー
- プロトコルエラーとツールの失敗
- 実行前に入力を検証する
- 安全に失敗させ、ハングさせない