FastAPI使いてぇ~
そう思ったことありますよね...
ということで現在作成しているゲームのバックエンドとしてFastAPIを使用しました
GitHubリポジトリ
初めてのFastAPIということでなにもわからん!!
とりまチュートリアル
ファイル構成はチャットGPTに聞いたやつなのでベストプラクティスなのかはわからないです
reactとかみたいにテンプレを一気に作ってくれるやつあったら楽なんだけど...
ファイル構成
├─.github (デプロイ時に自動作成)
│ └─workflows
├─api-factory (venvで作成した仮想環境)
├─app (動作を書く部分)
│ ├─crud
│ ├─models
│ ├─routers
│ │ ├─__init__.py
│ │ ├─firstapi.py (分けて書いた処理部分)
│ │ └─__pycache__
│ ├─schemas
│ ├─__init__.py
│ ├─config.py
│ ├─database.py
│ └─main.py (お作法的なやつとルーターを追加する)
├─.gitignore
├─README.md
├─requirements.txt
└─startup.sh
基本的に公式の記事を参考にしてデプロイ進めました
警告
Azure App Serviceの課金に注意してください。
使わない場合は削除する・落とすなどして対処してください
デプロイ先
https://apifactory-api-g6b6gqh0gfe3apdm.japaneast-01.azurewebsites.net/
今は落としてます
詰まったところ
スタートアップコマンド
自分のファイル構成の場合スタートアップに変更が必要でした
公式
gunicorn -w 2 -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8000 main:app
今回の構成の場合
gunicorn -w 2 -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8000 app.main:app
モジュール化やらしてるせいでスタートアップコマンドに修正が必要でした
環境変数
今回はスタートアップコマンドの件に気づくまで環境変数がおかしいのかと思い弄ってました
最終的な環境変数
あとがき
公式のGitHubのプロジェクトにもあったけどstartup.shってどんな役割してるんやろうか
スタートアップコマンドで参照している感じではなさそうだし
この記事ではスタートアップコマンドに直接startup.shでやってるからそんな感じで使うんかなと
最後に...
まだFastAPIちょろっとしか触ってないけどresponse見られたり実行速度早いらしかったりで便利そうな印象
このままフロントがんばるんば