MCP Academy · レッスン

ブロックしない非同期ツール

async I/Oを使って、多数の呼び出しを同時に処理します。

レッスン 1/413 ステップ

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

1つの遅いツールですべての人が待つ

ツールが遅い処理を同期的に実行すると、サーバー全体をブロックするため、他のすべての呼び出しが順番待ちになります。⏳

遅さの大半は待ち時間

データベースやAPIを呼び出すツールは、CPUを使うよりも応答を待つI/Oに大半の時間を費やします。

asyncでサーバーを解放する

ツールをasyncにすると、その待ち時間にサーバーが他のリクエストを処理でき、1つの呼び出しでアイドル状態になることを防げます。

async defのツールを定義する

ハンドラーをasync defで宣言すると、FastMCPがそれをawaitするため、その間イベントループは他の処理を実行できます。

@mcp.tool()
async def fetch(city: str) -> str:
    ...

I/O呼び出しをawaitする

asyncツール内では、非同期ライブラリに対してawaitを使います。待機するたびに制御がイベントループへ戻るため、ループが停止しません。

data = await client.get(url)
return data.text

非同期対応のライブラリを使う

httpxやasyncpgのようなクライアントを使います。これらはawaitを前提に作られており、ループ全体を停止させるブロッキングライブラリとは異なります。

イベントループを絶対にブロックしない

通常のtime.sleepや負荷の高いループは、他のすべてのリクエストをブロックします。asyncコードでは、ブロッキング呼び出しが気づかないうちにサーバーを停止させます。

重いCPU処理をオフロードする

本格的なCPU処理は、asyncio.to_threadを使ってスレッドへ移します。これによりイベントループを解放し、呼び出しを処理し続けられます。

result = await asyncio.to_thread(crunch, data)

呼び出しを並行して実行する

複数のデータを同時に取得する必要がありますか。asyncio.gatherを使えばawaitableをまとめて実行でき、順番にawaitするよりはるかに速く完了します。

a, b = await asyncio.gather(get(x), get(y))

awaitにタイムアウトを追加する

遅いawaitをタイムアウトで囲みます。これにより、停止した上流サービスのせいで1つのリクエストが永久に占有され、サーバーが枯渇するのを防げます。

asyncで同時実行性を拡張する

async I/Oを使うと、1つのプロセスで多数の処理中の呼び出しを同時に扱えるため、実際の負荷がかかってもサーバーの応答性を保てます。

クイックチェック

async I/Oは、負荷の高いMCPサーバーにどのような効果をもたらしますか。

まとめ:ブロックさせない

ツールをasyncにし、I/Oをawaitし、CPU処理をオフロードし、呼び出しをまとめて実行しました。これで1つの遅いツールがサーバー全体を停止させることはありません。🚀

無料で開始

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

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

コース
30
レッスン
120

よくある質問

「ブロックしない非同期ツール」レッスンは無料ですか?

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

「ブロックしない非同期ツール」で何を学びますか?

async I/Oを使って、多数の呼び出しを同時に処理します。 ブラウザで直接実行するハンズオンコードでMCP Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「ブロックしない非同期ツール」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. ブロックしない非同期ツール
  2. 並行処理とバックプレッシャー
  3. トークンを大量消費する結果を削減する
  4. セッションで水平スケーリングする
← MCP Academyに戻る