はじめに
Pythonアプリケーション開発の際に、FastAPIは高性能のソリューションを構築するための最も良い選択肢である。それは速さ、簡潔さ、非同期プログラミングのサポートを提供しており、 modern、スケーラブルなアプリケーションの開発に理想的です。
このチュートリアルでは、NoSQLデータベースと一緒にFastAPIアプリケーションを設定する手順を説明します。データの保存と管理において、NoSQLデータベースは柔軟性とスケール性を提供しており、多样かつ複雑なデータ構造を処理する必要があるアプリケーションに最適です。
前提条件
開始する前に、以下が必要です。
-
Ubuntuを実行しているサーバーと、sudo権限を持つ非rootユーザー。これを設定する方法については、このリストからお選びくださいし、初期サーバー設定ガイドに従ってください。サポートされているバージョンのUbuntuで作業してください。
-
Linuxのコマンドラインを熟悉していること。コマンドラインの入門または再び学ぶために、このガイドをLinux command line primerに訪れることができます。
-
Ubuntuのターミナルで
sudo apt-get update
を実行して、搭載されているリポジトリから提供されるソフトウェアの最新のバージョンとセキュリティ更新を確認します。
これらの指示は、Ubuntuの最新版であるUbuntu 24.04、Ubuntu 22.04、およびUbuntu 20.04に適用されます。Ubuntu 18.04または以下のバージョンを使用している場合は、Ubuntuがこれらのバージョンのサポートをもっていないため、最新のバージョンにアップグレードすることを推奨します。このガイドのコレクションは、Ubuntuのバージョンアップに役立つでしょう。
手順1 – マシン上にPython環境を設定する
このチュートリアルでは、python3
パッケージを使用してコマンドを実行します。最新のUbuntuバージョンではPython 3のインストールが行われていますので、そのインストールを確認するには以下のコマンドを実行してください:
このコマンドがエラーを返す場合は、以下のようにパッケージをインストールし直すことができます:
次に、Pythonパッケージとその依存関係を安全にインストールするために、pip
をインストールする必要があります。
手順2 – 仮想環境を作成する
Ubuntu 24.04以下を使用している場合、仮想環境を作成する必要はないが、プロジェクトの依存性を隔離するのが良い慣習です。
Python 3.11およびpip 22.3以降では、新しいPEP 668が存在し、Pythonの基本環境を「外部管理」としてマークすることを规定しています。これ意味すると、仮想環境の中で作業しない限り、pip
を使用してパッケージを正常にインストールすることができなくなります。
このステップで、プロジェクトのための仮想環境を作成します。これにより、プロジェクトの依存関係を隔離し、異なるパッケージのバージョン間の潜在的な衝突を避けることができます。ターミナルで以下のコマンドを実行してください。
これは、仮想環境を作成するために必要なvenv
パッケージをインストールします。
このコマンドは、作業ディレクトリの中にfastapi-env
という仮想環境を作成します。この環境で作業するためには、それを有効にする必要があります。
このコマンドの成功実行後、ターミナルのプレFIXに以下のような表示が表示されます。
(fastapi-env) user@machine:~$
これで、この仮想環境内で必要な依存関係をインストールすることができます。
手順3 – 必要なライブラリやパッケージのインストール
この手順で、このチュートリアルを正常に進めるために必要ないくつかのパッケージとライブラリをインストールします。
fastapiをインストールして、FastAPIアプリケーションの構築に必要なものとして、uvicornをインストールして、FastAPIアプリケーションの実行に必要なものとします。
このチュートリアルでは、MongoDBをNoSQLデータベースとして使用します。FastAPI内でMongoDBとのやり取りを行うためには、asyncio Python driver for MongoDBのmotor
をインストールする必要があります。
手順4 – Ubuntu上でMongoDBをインストールして設定する
Ubuntuマシン上でMongoDBをインストールするには、以下のコマンドをターミナルで実行します。
実行に成功すると、これはecho引数を返します。次に、以下のようにしてください。
これはMongoDBの設定後、最新の更新を入手することを保証します。
次に、MongoDBのインストールに必要なopenssl
依存をシステムにインストールする必要があります。
実行後、サービスの再起動を要求されます。再起動後、以下のコマンドを使用してMongoDBをインストールします。
MongoDBサービスを開始し、有効化します。
以下のコマンドを実行して、MongoDBサービスの状態を確認し、接続をテストします。
ステップ 5 – FastAPIアプリケーションを作成する
次のステップは、FastAPIアプリケーションを作成することです。あなたの作業ディレクトリーにdatabase.py
ファイルを作成してください。
これは空のテキスト编辑器を開きます。データベース接続のロジックをここに記述してください。
mydatabase
のmycollection
にデータが存在すると仮定して、main.py
を作成してください。このFastAPIアプリで、database.py
を使用してデータベース接続を Establishし、AI予測のルートを定義します。これらのルートを使用して、入力を検証します。
テキスト编辑器で以下のロジックを記述します。
このアプリケーションが行うことの詳細を以下に解説します。
- sklearnの線形回帰モデル: このモデルは、単一の入力特徴に基づいて出力を予測します。
- Pydanticモデルからの入力データ: これは予測エンドポイントに期待される入力構造を定義しています。この場合、それは
float
です。 - MongoDBルーティング: ルーティング
/items/
とPOST /items/
を使用することで、MongoDBコレクションにアイテムを取得および插入することができます。
ステップ 6 – FastAPIアプリケーションを実行
このアプリケーションを成功して実行するには、アプリケーションに使用されているライブラリやパッケージをインストールする必要があります。
現在、このアプリケーションを実行するために以下のコマンドを使用します。
このコマンドの出力は以下の通りになります。
OutputINFO: Will watch for changes in these directories: ['/path/to/your/project']
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [XXXXX] using statreload
INFO: Started server process [XXXXX]
INFO: Waiting for application startup.
INFO: Application startup complete.
FastAPIはSwagger UIを使用して自動的にインタラクティブなAPIドキュメントを生成しました。http://127.0.0.1:8000/docs
に移動してアクセスすることができます。
ツールを使用して、curl
やPostmanなど、入力に基づいて値を予測するエンドポイントに呼び出します。
curl -X POST "http://127.0.0.1:8000/predict/" -H "Content-type: application/json" -d '{"feature": 3}'
ステップ 7 [オプション] – Docker Composeを使用してアプリケーションを実行
アプリケーションをdocker-compose
を使用して実行することができます。アプリケーションのコンテナ化は、デプロイメントプロセスをスムーズ化し、アプリケーションのデプロイ、スケール、および保守の手間を省くことができます。Dockerfileでアプリケーションを定義するには、Docker Composeを使用してFastAPIアプリケーションをデプロイにある手順に従います。
結論
このチュートリアルで、MongoDBを使用してFastAPIアプリケーションを設定する方法、入力予測の保存と取り出しを行うことができるAIベースの簡単なアプリケーションを作成する方法を学びました。
FastAPIとNoSQLデータベースの組み合わせは、AI駆動のアプリケーションの構築とスケールアウトに強力且つ柔軟な環境を提供します。
Source:
https://www.digitalocean.com/community/tutorials/set-up-fastapi-app-with-nosql-db