コンテンツへスキップ

FastAPI CLI

FastAPI CLI は、FastAPI アプリケーションを提供したり、FastAPI プロジェクトを管理したりするために使用できるコマンドラインプログラムです。

FastAPI をインストールする際 (例: pip install "fastapi[standard]")、fastapi-cli と呼ばれるパッケージが含まれており、このパッケージはターミナルで fastapi コマンドを提供します。

開発用に FastAPI アプリケーションを実行するには、fastapi dev コマンドを使用します。

$ <font color="#4E9A06">fastapi</font> dev <u style="text-decoration-style:solid">main.py</u>

  <span style="background-color:#009485"><font color="#D3D7CF"> FastAPI </font></span>  Starting development server 🚀

             Searching for package file structure from directories with
             <font color="#3465A4">__init__.py</font> files
             Importing from <font color="#75507B">/home/user/code/</font><font color="#AD7FA8">awesomeapp</font>

   <span style="background-color:#007166"><font color="#D3D7CF"> module </font></span>  🐍 main.py

     <span style="background-color:#007166"><font color="#D3D7CF"> code </font></span>  Importing the FastAPI app object from the module with the
             following code:

             <u style="text-decoration-style:solid">from </u><u style="text-decoration-style:solid"><b>main</b></u><u style="text-decoration-style:solid"> import </u><u style="text-decoration-style:solid"><b>app</b></u>

      <span style="background-color:#007166"><font color="#D3D7CF"> app </font></span>  Using import string: <font color="#3465A4">main:app</font>

   <span style="background-color:#007166"><font color="#D3D7CF"> server </font></span>  Server started at <font color="#729FCF"><u style="text-decoration-style:solid">http://127.0.0.1:8000</u></font>
   <span style="background-color:#007166"><font color="#D3D7CF"> server </font></span>  Documentation at <font color="#729FCF"><u style="text-decoration-style:solid">http://127.0.0.1:8000/docs</u></font>

      <span style="background-color:#007166"><font color="#D3D7CF"> tip </font></span>  Running in development mode, for production use:
             <b>fastapi run</b>

             Logs:

     <span style="background-color:#007166"><font color="#D3D7CF"> INFO </font></span>  Will watch for changes in these directories:
             <b>[</b><font color="#4E9A06">&apos;/home/user/code/awesomeapp&apos;</font><b>]</b>
     <span style="background-color:#007166"><font color="#D3D7CF"> INFO </font></span>  Uvicorn running on <font color="#729FCF"><u style="text-decoration-style:solid">http://127.0.0.1:8000</u></font> <b>(</b>Press CTRL+C to
             quit<b>)</b>
     <span style="background-color:#007166"><font color="#D3D7CF"> INFO </font></span>  Started reloader process <b>[</b><font color="#34E2E2"><b>383138</b></font><b>]</b> using WatchFiles
     <span style="background-color:#007166"><font color="#D3D7CF"> INFO </font></span>  Started server process <b>[</b><font color="#34E2E2"><b>383153</b></font><b>]</b>
     <span style="background-color:#007166"><font color="#D3D7CF"> INFO </font></span>  Waiting for application startup.
     <span style="background-color:#007166"><font color="#D3D7CF"> INFO </font></span>  Application startup complete.

fastapi と呼ばれるコマンドラインプログラムは FastAPI CLI です。

FastAPI CLI は、Python プログラム (例: main.py) へのパスを受け取り、FastAPI インスタンス (通常 app と命名) を自動的に検出し、正しいインポートプロセスを決定し、それを提供します。

プロダクションでは、代わりに fastapi run を使用します。🚀

内部的には、FastAPI CLI は高性能でプロダクション対応の ASGI サーバーである Uvicorn を使用しています。😎

fastapi dev

fastapi dev を実行すると、開発モードが開始されます。

デフォルトでは、自動リロード が有効になっており、コードを変更するとサーバーが自動的にリロードされます。これはリソースを大量に消費し、無効にしている場合よりも安定性が低い可能性があります。開発でのみ使用してください。また、127.0.0.1 の IP アドレスでリッスンします。これは、マシンが単独で通信するための IP アドレス (localhost) です。

fastapi run

fastapi run を実行すると、FastAPI はデフォルトでプロダクションモードで起動します。

デフォルトでは、自動リロード は無効になっています。また、0.0.0.0 の IP アドレスでリッスンします。これは利用可能なすべての IP アドレスを意味し、これによりマシンと通信できる人なら誰でもパブリックにアクセスできるようになります。これは、例えばコンテナでプロダクションで実行する場合の通常の実行方法です。

ほとんどの場合、(そしてそうすべきですが) 上位に HTTPS を処理する「ターミネーションプロキシ」を用意することになります。これはアプリケーションのデプロイ方法によって異なり、プロバイダがこれを行う場合もあれば、自分で設定する必要がある場合もあります。

ヒント

詳細については、デプロイメントのドキュメント を参照してください。