はじめに
最近LangChainを使っている関係でpythonを使うことが増えました。
今回pythonでWebAPIの作成とAzure App Serviceにあげるまでを見様見真似でやってみたので、備忘録を残します。
追記
構成のスタートアップコマンドを修正しました。
環境
python v3.11
pythonでWebAPIを作る
今回私はこちらのFastAPIを使って作ることにしました。
Swagger UIも備わっていて便利です。
こちらに沿って必要なもののインストールとFastAPIを作ります。 (ソースコードまるコピなので省略します。)
Azure App Serviceにあげる
requirements.txtを追加します。
以下のサイトを参考に生成しました。
requirements.txtにはgunicorn
も追加します。
Azureで動かす際に、uvicornのワーカークラスでgunicornを動かす事が推奨されているそうなので。
続いて、Azure PortalからApp Serviceを追加します。
Pythonのバージョンを合わせるのを忘れずに。(あってないとエラーで死にました)
ソースコードはさくっと試したかったので、Visual Studio CodeのAzure拡張機能を使ってデプロイしました。
デプロイできたら、構成のスタートアップコマンドに以下のように追加します。
gunicorn -w 4 -k uvicorn.workers.UvicornWorker main:app
あげて見た結果
環境変数と接続文字列
ソースコードに以下のようにかけば、Azure側で追加した環境変数と接続文字列の情報を見てくれます。
app_client_id = os.environ['APP_CLIENT_ID']
今回はまったところとエラー解消のために見ればいいところ
今回は省略していますが、Azure SQL Databaseとの接続がうまくいかず(ファイアウォールにIPアドレス接続忘れ)、1日ぐらいハマりました。
このエラー画面を何十回も見た…
これまでC#で作っていたときは、F12でコンソールを見ればだいたい解決していた印象だったので、あまり見なかったのですが、ログストリームにすべての答えが書いてありました。。。
結論:ログストリームを見よう