NoSQL データベースを使用して FastAPI アプリケーションをセットアップするにはどうすればよいですか?

0 株式
0
0
0
0

導入

Pythonアプリケーションを開発する場合、そのスピード、シンプルさ、そして非同期プログラミングのサポートから、FastAPIは最適な選択肢です。このチュートリアルでは、多様なデータを管理するための柔軟性とスケーラビリティを提供するNoSQLデータベースでFastAPIを設定する方法を説明します。.

前提条件
  • Ubuntu サーバー、sudo アクセスとファイアウォールが有効になっている非 root ユーザー。.
  • Linux コマンドラインの紹介。.
  • 注文 sudo apt-get アップデート Ubuntu ターミナルで実行して、システム リポジトリで利用可能なソフトウェアの最新バージョンとセキュリティ更新がシステムにインストールされていることを確認します。.

注:これらの手順は、Ubuntu 24.04、Ubuntu 22.04、Ubuntu 20.04 の最新バージョンに適用されます。Ubuntu 18.04 以前をご利用の場合は、Ubuntu がこれらのバージョンをサポートしていないため、新しいバージョンへのアップグレードをお勧めします。.

ステップ1 – システムにPython環境を設定する

このチュートリアルでは、コマンドを実行するためにpython3パッケージを使用します。Ubuntuの新しいバージョンにはPython 3がデフォルトでインストールされているため、インストールを確認するには次のコマンドを実行してください。

python3 --version

このコマンドがエラーを返す場合は、次のコマンドを実行してパッケージをインストールまたは再インストールできます。

sudo apt-get install python3

次に、Python パッケージとその依存関係を安全にインストールするには、pip をインストールする必要があります。.

sudo apt-get install python3-pip

ステップ2 – 仮想環境を作成する

Ubuntu バージョン 24.04 未満を使用している場合は、仮想環境を作成する必要はありませんが、プロジェクトの依存関係を分離することがベスト プラクティスです。.

Python 3.11 および pip 22.3 以降では、Python ベース環境を「外部管理」としてマークする新しい PEP 668 が導入されました。つまり、仮想環境で作業していない限り、pip を使用してパッケージを正常にインストールすることはできません。 やれよ。.

このステップでは、プロジェクトの依存関係を分離し、異なるバージョンのパッケージ間で発生する可能性のある問題を予防する仮想環境をプロジェクト用に作成します。ターミナルで以下のコマンドを実行してください。

sudo apt-get install python3-venv

このコマンドは終了しました。 ベンヴ 仮想環境を作成するために必要なものがインストールされます。.

python3 -m venv fastapi-env

このコマンドは、仮想環境を作成します。 fastapi-env 作業ディレクトリ内にディレクトリが作成されます。この環境で作業を開始するには、有効化する必要があります。.

source fastapi-env/bin/activate

成功すると、次のようにターミナルプレビューが表示されます。

(fastapi-env) user@machine:~$

これで、この仮想環境内で必要な依存関係のインストールを開始できます。.

ステップ3 – 必要なライブラリとパッケージをインストールする

この手順では、このチュートリアルを正常に実行するために必要ないくつかのパッケージとライブラリをインストールします。.

まずインストールして ファストAPI まずはアプリの構築に必要なことから始め、 ウビコーン FastAPI アプリケーションを実行するために必要です。.

pip install fastapi uvicorn

このチュートリアルでは、MongoDBをNoSQLデータベースとして使用します。FastAPIからMongoDBを操作するには、 モーター MongoDB 用の非同期 Python ドライバーである をインストールします。.

pip install motor

ステップ4 – UbuntuにMongoDBをインストールしてセットアップする

Ubuntu システムに MongoDB をインストールするには、ターミナルで次のコマンド セットを実行します。

wget -qO - https://www.mongodb.org/static/pgp/server-7.0.asc | sudo gpg --dearmor -o /usr/share/keyrings/mongodb-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/mongodb-archive-keyring.gpg] https://repo.mongodb.org/apt/ubuntu $(lsb_release -cs)/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list

成功した場合、このコマンドはechoパラメータを返します。それでは、簡単な更新を行ってください。

sudo apt-get update

これにより、MongoDB キーを設定した後に最新のアップデートを取得できるようになります。.

その後、MongoDB のインストールに必要な openssl 依存関係をシステムにインストールする必要があります。.

wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2_amd64.deb
sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb

実行後、サービスの再起動を求められます。再起動後、以下のコマンドでMongoDBをインストールしてください。

sudo apt-get install -y mongodb

MongoDB サービスを起動して有効にします。

sudo systemctl start mongod
sudo systemctl enable mongod

次のコマンドを実行すると、MongoDB サービスのステータスを確認し、接続をテストできます。

sudo systemctl status mongod
mongo --eval 'db.runCommand({connectionStatus: 1})'

ステップ5 – FastAPIアプリケーションを作成する

次のステップはFastAPIアプリケーションを作成することです。作業ディレクトリに、 データベース.py 作成する:

nano database.py

空のテキストエディタが開きます。ここにデータベース接続ロジックを記述してください。.

from motor.motor_asyncio import AsyncIOMotorClient

MONGO_DETAILS = "mongodb://localhost:27017"

client = AsyncIOMotorClient(MONGO_DETAILS)

db = client.mydatabase

collection = db.mycollection

セットが マイコレクション データベースから マイデータベース データがいっぱいなので、ファイルが必要です メイン.py アプリケーションロジックを保持するクラスを作成します。以下のFastAPIアプリケーションでは、次のようにデータベースに接続します。 データベース.py AI予測のためのパスが確立され、定義されています。これらのパスは入力検証に使用されます。.

nano main.py

テキスト エディターで次のコードを記述します。

from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from sklearn.linear_model import LinearRegression
import numpy as np
from database import collection
app = FastAPI()
# simple dataset and model
x = np.array([[1], [2], [3], [4], [5]])
y = np.array([2, 4, 6, 8, 10])
model = LinearRegressions()
model.fit(x, y)
# define the Pydantic model for input validation
class InputData(BaseModel):
feature: float
# route_1 for predicting the output based on input feature
@app.post("/predict/")
async def predict(input_data: InputData):
try:
prediction = model.predict([[input_data.feature]])
return {"prediction": prediction[0]}
except Exception as ex:
raise HTTPException(status_code=400, detail=str(ex))
# route_2 to interact with MongoDB
@app.get("/items/")
async def get_item():
items = []
async for item in collection.find():
items.append(item)
return items
# route_3 to add a new item to MongoDB
@app.post("/items/")
async def create_item(item: dict):
new_item = await collection.insert_one(item)
created_item = await collection.fine_one({"_id": new_item.inserted_id})
return created_item

このプログラムがどのように動作するかを説明します。

  • Sklearnの線形回帰モデル: このモデルは入力特徴に基づいて出力を予測します。.
  • Pydanticモデルからの入力データ: このモデルは、予測エンドポイントに期待される入力構造を定義します。ここでは、入力はfloat型です。.
  • MongoDB パス: ルート /アイテム/ そして POST /items/ これらを使用すると、MongoDB コレクションからアイテムを取得してインポートできます。.

ステップ6 – FastAPIアプリケーションを実行する

このプログラムを正常に実行するには、プログラムで使用されるライブラリとパッケージをインストールする必要があります。.

pip install pydantic scikit-learn numpy

ここで、次のコマンドを使用してこのプログラムを実行します。

uvicorn main:app --reload

このコマンドの出力は次のようになります。

Output
INFO: 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}'

結果

このチュートリアルでは、MongoDB を使用して FastAPI アプリケーションを正常にデプロイし、入力予測を保存および取得できるシンプルな AI ベースのアプリケーションを構築する方法を学習しました。.

FastAPI と NoSQL データベースの組み合わせにより、AI ベースのアプリケーションを構築および拡張するための強力で柔軟な環境が提供されます。.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

あなたも気に入るかもしれない