目次
FastAPIを使っていてサーバー(uvicorn)を使った軌道の方法を忘れがちなのと、覚えなくても良い楽な方法を発見したので備忘録を残します。
基本的なFastAPIサーバー(uvicorn)の起動方法
FastAPIで作成したアプリケーションを起動する基本的な方法は、uvicornコマンドを使用することです。
まずは、以下のような簡単なFastAPIアプリケーションを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:app
、src
ディレクトリ内のmain.py
を起動する場合はuvicorn src.main:app
となります。
この基本コマンドには、開発を効率化するためのオプションがいくつかあります。例えば、--reload
オプションを付けることでコードの変更がリアルタイムに反映されるようになり、--port
オプションで起動するポートを指定できます。
簡略化して起動を楽にする方法
基本的な起動方法を理解した上で、もっと簡単に起動できる方法を紹介します。
特に、頻繁にFastAPIを利用しない人にとっては、オプションが多くなると忘れがちです。
そこで、main.py
に少しコードを追加することで、通常のPythonファイルを実行するようにサーバーを起動できるようになります。
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の起動を書いてオプションを書いて...としていたので、気づいていない方いたらお試しください。
参考リンク: