MCP Academy · レッスン

正常な終了とリソース解放

サーバー停止時にコネクションプールとファイルを閉じます。

レッスン 4/413 ステップ

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

シャットダウンが重要な理由

閉じられない接続を開いたままにするとリソースがリークします。ソケットが積み上がり、プールが確保されたままになり、データベースが稼働し続けます。

後処理はyieldの後に行う

lifespanのyield以降にあるコードはすべてシャットダウン処理であり、サーバーの停止指示を受けたときに実行されます。

async def lifespan(server):
    db = await connect()
    yield {"db": db}
    await db.close()

開いたものを閉じる

基本原則は、起動時に開いた各リソースに対応するcloseを後処理に追加し、何も未解放のまま残さないことです。

try / finallyで保証する

try / finallyでyieldを囲むと、リクエストの途中でクラッシュした場合でもクリーンアップが実行されます。

async def lifespan(server):
    db = await connect()
    try:
        yield {"db": db}
    finally:
        await db.close()

実行中の処理を完了させる

適切な停止では、破棄処理を行う前に実行中のツール呼び出しを完了させます。処理の途中で突然リソースを奪うことはありません。

閉じる前にフラッシュする

クライアントによってはデータをバッファリングするため、最後に送信したバイト列が失われないよう、閉じる前に保留中の書き込みをflushしてください。

逆の順序で閉じる

構築した順序の逆に破棄してください。そうすれば、依存しているものがまだ生きている間に、それが依存するものを閉じずに済みます。

終了時にハングさせない

遅いクリーンアップにはtimeoutを設定し、停止処理が進まない接続によってサーバー全体のシャットダウンが妨げられないようにします。

冪等なクリーンアップ

後処理は冪等にしてください。シャットダウンが複数回発生する可能性があるため、同じものを2回閉じても問題が起きないようにします。

シャットダウンの経路をログに残す

リソースを閉じるたびに短いログ行を出すと、問題発生時に、何も分からない終了ではなく実際にデバッグできる終了になります。

Context Managerに任せる

クライアントをasync withでラップすると自動的に閉じられます。解放処理をPythonに任せられるため、手動のクリーンアップを減らせます。

async def lifespan(server):
    async with connect() as db:
        yield {"db": db}

確認問題

lifespanでは、リソースを解放するコードをどこに記述しますか?

まとめ:クリーンなシャットダウン

yield の後にリソースを解放し、try/finally で保護して、逆順に閉じ、ハングを避けます。これでサーバーが正常に起動・停止するようになりました。✅

無料で開始

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. Lifespanの起動フック
  2. アプリコンテキストで状態を共有する
  3. コンテキストオブジェクトにアクセスする
  4. 正常な終了とリソース解放
← MCP Academyに戻る