Lifespanの起動フック
サーバーの起動時に接続を一度だけ開きます。
「Lifespanの起動フック」はCoddyKit上の無料MCP Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはMCP Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 MCP Academyコースには全4レッスンが含まれています。
一度起動して何度も使う
データベース接続を開くなど、一部のセットアップはツール呼び出しのたびではなく、サーバーの起動時に一度だけ行うべきです。🚀
Lifespanについて
lifespanは、リクエストの到着前に起動コードを実行し、サーバーの停止後に破棄コードを実行するフックです。
非同期コンテキストマネージャー
lifespanはasync context managerです。yieldの前のコードが起動処理、yieldの後のコードがシャットダウン処理になります。
from contextlib import asynccontextmanager
@asynccontextmanager
async def lifespan(server):
# startup
yield
# shutdownFastMCPに組み込む
lifespan引数を使ってlifespanをサーバーに渡すと、FastMCPはサーバーの稼働期間に合わせてそれを実行します。
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("demo", lifespan=lifespan)高コストなものはここで開く
起動ブロックは、データベースプール、HTTPクライアント、メモリへのモデルの読み込みなど、高コストなセットアップを行うのに適しています。
共有状態をyieldする
yieldしたものはすべてのリクエストで共有されるコンテキストになるため、一度構築して引き渡します。
async def lifespan(server):
db = await connect_db()
yield {"db": db}起動処理はすべてのツールより先に実行される
FastMCPは、最初のツール呼び出しを受け付ける前に起動処理が完了することを保証します。そのため、リソースは必要な時点までに準備されます。
型付きコンテキストも使える
dictの代わりに小さなdataclassをyieldすると、共有オブジェクトに対して型付きで自動補完可能なアクセスができます。
from dataclasses import dataclass
@dataclass
class AppCtx:
db: object起動処理を速く保つ
クライアントは起動処理を待つため、処理は簡潔に保ちます。必要なものだけ接続し、遅い任意の処理は初回利用時まで先送りしてください。
1サーバーにつき1つのLifespan
サーバーにlifespanは1つだけあります。セットアップをツールに分散させず、すべての起動処理をその中にまとめてください。
起動エラーに対処する
起動時にエラーが発生した場合、サーバーは中途半端な設定のまま動作して後から不可解な失敗を起こすのではなく、起動を拒否すべきです。
確認問題
lifespanでは、yieldに対して起動コードをどこに記述しますか?
まとめ:Lifespanフック
lifespanについて学びました。これはyieldの前にセットアップを実行し、共有状態をyieldし、その後に後処理を行う非同期コンテキストマネージャーです。次は、共有方法です。🎯
よくある質問
「Lifespanの起動フック」レッスンは無料ですか?
はい。「Lifespanの起動フック」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、MCP Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 MCP Academyコースには全4レッスンが含まれています。
「Lifespanの起動フック」で何を学びますか?
サーバーの起動時に接続を一度だけ開きます。 ブラウザで直接実行するハンズオンコードでMCP Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
MCP Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのMCP Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「Lifespanの起動フック」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このMCP Academyレッスンでコードを書いて実行できますか?
はい。すべてのMCP Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Lifespanの起動フック
- アプリコンテキストで状態を共有する
- コンテキストオブジェクトにアクセスする
- 正常な終了とリソース解放