FastAPIサーバー(uvicorn)の基本的な起動と簡略化して楽にする方法

公開日:
目次

FastAPIを使っていてサーバー(uvicorn)を使った軌道の方法を忘れがちなのと、覚えなくても良い楽な方法を発見したので備忘録を残します。

基本的なFastAPIサーバー(uvicorn)の起動方法

FastAPIで作成したアプリケーションを起動する基本的な方法は、uvicornコマンドを使用することです。

まずは、以下のような簡単なFastAPIアプリケーションをmain.pyがあるとします。

main.py
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"hello"}

FastAPIのサーバー(uvicorn)は下記のコマンドで起動することができます(最小構成)。

uvicorn main:app

このコマンドの解説を簡単にすると、uvicornはFastAPIが内部で使用するASGIサーバーであるため、まずはこれを指定します。

次にmain:appは、main.pyファイル内で作成したFastAPIインスタンスを指しています。ファイル名やインスタンス名が異なる場合は、それに応じて指定を変更します。

例えば、hello.py内にアプリケーションがある場合はuvicorn hello:appsrcディレクトリ内のmain.pyを起動する場合はuvicorn src.main:appとなります。

この基本コマンドには、開発を効率化するためのオプションがいくつかあります。例えば、--reloadオプションを付けることでコードの変更がリアルタイムに反映されるようになり、--portオプションで起動するポートを指定できます。

簡略化して起動を楽にする方法

基本的な起動方法を理解した上で、もっと簡単に起動できる方法を紹介します。

特に、頻繁にFastAPIを利用しない人にとっては、オプションが多くなると忘れがちです。

そこで、main.pyに少しコードを追加することで、通常のPythonファイルを実行するようにサーバーを起動できるようになります。

main.py
from fastapi import FastAPI
+ import uvicorn

app = FastAPI()

@app.get("/")
async def root():
    return {"hello"}
      
+ if __name__ == '__main__':
+     uvicorn.run(app, host="0.0.0.0", port=8000)

これで、以下のコマンドを実行するだけでサーバーを起動できます。

python main.py

ただし、エディタによっては、uvicorn.runを別のファイルに記述しなければうまくオプションを設定できないことがあります。その場合は、適宜ファイルを分けて対応してください。

基本的なことではありますが、私は気づかずにずっとuvicornの起動を書いてオプションを書いて...としていたので、気づいていない方いたらお試しください。

参考リンク: