Wie richtet man eine FastAPI-Anwendung mit einer NoSQL-Datenbank ein?

0 Aktien
0
0
0
0

Einführung

Bei der Entwicklung von Python-Anwendungen ist FastAPI aufgrund seiner Geschwindigkeit, Einfachheit und Unterstützung für asynchrone Programmierung eine hervorragende Wahl. In diesem Tutorial zeigen wir Ihnen, wie Sie FastAPI mit einer NoSQL-Datenbank einrichten, die Flexibilität und Skalierbarkeit für die Verwaltung verschiedenster Daten bietet.

Voraussetzungen
  • Ubuntu Server, ein Benutzer ohne Root-Rechte, aber mit sudo-Zugriff und aktivierter Firewall.
  • Einführung in die Linux-Befehlszeile.
  • Befehl sudo apt-get update Führen Sie den Befehl im Ubuntu-Terminal aus, um sicherzustellen, dass Ihr System über die neuesten Versionen und Sicherheitsupdates der in den System-Repositories verfügbaren Software verfügt.

Hinweis: Diese Anleitung gilt für die neuesten Ubuntu-Versionen: Ubuntu 24.04, Ubuntu 22.04 und Ubuntu 20.04. Wenn Sie Ubuntu 18.04 oder eine ältere Version verwenden, empfehlen wir Ihnen ein Upgrade auf eine neuere Version, da Ubuntu diese Versionen nicht mehr unterstützt.

Schritt 1 – Einrichten der Python-Umgebung auf Ihrem System

In diesem Tutorial verwenden wir das Paket python3, um Befehle auszuführen. Neuere Ubuntu-Versionen enthalten Python 3 standardmäßig. Um die Installation zu überprüfen, führen Sie folgenden Befehl aus:

python3 --version

Falls dieser Befehl einen Fehler zurückgibt, können Sie das Paket mit folgendem Befehl installieren oder neu installieren:

sudo apt-get install python3

Als Nächstes müssen Sie pip installieren, um Python-Pakete und deren Abhängigkeiten sicher zu installieren.

sudo apt-get install python3-pip

Schritt 2 – Erstellen einer virtuellen Umgebung

Bei Verwendung einer Ubuntu-Version < 24.04 ist die Erstellung einer virtuellen Umgebung nicht erforderlich, es empfiehlt sich jedoch, die Projektabhängigkeiten zu trennen.

Ab Python 3.11 und pip 22.3 wurde der neue PEP 668 eingeführt, der Python-Basisumgebungen als “extern verwaltet” kennzeichnet. Das bedeutet, dass Sie pip nicht erfolgreich zum Installieren von Paketen verwenden können, es sei denn, Sie arbeiten in einer virtuellen Umgebung. Mach es.

In diesem Schritt erstellen Sie eine virtuelle Umgebung für Ihr Projekt, die Projektabhängigkeiten isoliert, um potenzielle Probleme zwischen verschiedenen Paketversionen zu vermeiden. Führen Sie die folgenden Befehle im Terminal aus:

sudo apt-get install python3-venv

Dieser Befehl ist geschlossen. venv Es installiert alles, was zum Erstellen einer virtuellen Umgebung benötigt wird.

python3 -m venv fastapi-env

Dieser Befehl erstellt eine virtuelle Umgebung namens fastapi-env Dadurch wird ein Verzeichnis innerhalb Ihres Arbeitsverzeichnisses erstellt. Um in dieser Umgebung arbeiten zu können, müssen Sie sie aktivieren.

source fastapi-env/bin/activate

Bei erfolgreicher Ausführung wird die Terminalvorschau wie folgt angezeigt:

(fastapi-env) user@machine:~$

Jetzt können Sie mit der Installation der erforderlichen Abhängigkeiten innerhalb dieser virtuellen Umgebung beginnen.

Schritt 3 – Installation der benötigten Bibliotheken und Pakete

In diesem Schritt installieren Sie einige Pakete und Bibliotheken, die für das erfolgreiche Befolgen dieses Tutorials erforderlich sind.

Zuerst durch die Installation FastAPI Wir beginnen mit den Dingen, die zum Erstellen Ihrer App benötigt werden, und dann uvicorn Dies ist erforderlich, um die FastAPI-Anwendung auszuführen.

pip install fastapi uvicorn

In diesem Tutorial verwenden wir MongoDB als NoSQL-Datenbank. Um von FastAPI aus mit MongoDB zu interagieren, benötigen Sie Folgendes: Motor Installieren Sie , einen asynchronen Python-Treiber für MongoDB.

pip install motor

Schritt 4 – MongoDB auf Ubuntu installieren und einrichten

Um MongoDB auf Ihrem Ubuntu-System zu installieren, führen Sie die folgenden Befehle im Terminal aus:

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

Bei Erfolg gibt dieser Befehl den Parameter „echo“ zurück. Führen Sie nun ein kurzes Update durch:

sudo apt-get update

Dadurch wird sichergestellt, dass Sie nach der Einrichtung Ihrer MongoDB-Schlüssel die neuesten Updates erhalten.

Anschließend müssen Sie eine OpenSSL-Abhängigkeit auf Ihrem System installieren, die für die Installation von MongoDB erforderlich ist.

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

Nach dem Ausführen werden Sie aufgefordert, die Dienste neu zu starten. Installieren Sie nach dem Neustart MongoDB mit folgendem Befehl:

sudo apt-get install -y mongodb

Starten und aktivieren Sie die MongoDB-Dienste:

sudo systemctl start mongod
sudo systemctl enable mongod

Sie können den Status des MongoDB-Dienstes überprüfen und die Verbindung testen, indem Sie die folgenden Befehle ausführen:

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

Schritt 5 – FastAPI-Anwendung erstellen

Der nächste Schritt ist die Erstellung einer FastAPI-Anwendung. Erstellen Sie dazu in Ihrem Arbeitsverzeichnis eine Datei mit dem Namen database.py Erstellen:

nano database.py

Dadurch öffnet sich ein leerer Texteditor. Schreiben Sie hier Ihre Datenbankverbindungslogik.

from motor.motor_asyncio import AsyncIOMotorClient

MONGO_DETAILS = "mongodb://localhost:27017"

client = AsyncIOMotorClient(MONGO_DETAILS)

db = client.mydatabase

collection = db.mycollection

Angenommen, die Menge meine Sammlung Aus der Datenbank meineDatenbank Es ist mit Daten gefüllt, jetzt benötigen Sie eine Datei. main.py Erstellen Sie eine Klasse, die Ihre Anwendungslogik enthält. Stellen Sie in der unten stehenden FastAPI-Anwendung über folgendes eine Verbindung zur Datenbank her: database.py Es ist etabliert und es sind Pfade für KI-Vorhersagen definiert. Diese Pfade werden zur Eingabevalidierung verwendet.

nano main.py

Geben Sie im Texteditor folgenden Code ein:

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

Hier ist eine Erklärung, wie dieses Programm funktioniert:

  • Lineares Regressionsmodell aus sklearnDieses Modell sagt die Ausgabe auf Basis eines Eingabemerkmals voraus.
  • Eingangsdaten aus dem Pydantic-ModellDieses Modell definiert die erwartete Eingabestruktur für den Vorhersageendpunkt. Hierbei handelt es sich bei der Eingabe um eine Gleitkommazahl.
  • MongoDB-PfadeRouten /Artikel/ Und POST /items/ Sie ermöglichen es Ihnen, Elemente aus Ihrer MongoDB-Sammlung abzurufen und zu importieren.

Schritt 6 – Führen Sie die FastAPI-Anwendung aus

Um dieses Programm erfolgreich auszuführen, müssen Sie die im Programm verwendeten Bibliotheken und Pakete installieren.

pip install pydantic scikit-learn numpy

Verwenden Sie nun den folgenden Befehl, um dieses Programm auszuführen:

uvicorn main:app --reload

Die Ausgabe dieses Befehls lautet wie folgt:

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 hat mithilfe von Swagger UI automatisch eine interaktive API-Dokumentation generiert. Sie können diese über die Adresse aufrufen. http://127.0.0.1:8000/docs Greife darauf zu.

Sie können Tools wie curl oder Postman verwenden, um einen Endpunkt aufzurufen, der den Wert basierend auf Ihrer Eingabe vorhersagt.

curl -X POST "http://127.0.0.1:8000/predict/" -H "Content-type: application/json" -d '{"feature": 3}'

Ergebnis

In diesem Tutorial haben Sie gelernt, wie Sie eine FastAPI-Anwendung erfolgreich mit MongoDB bereitstellen und eine einfache KI-basierte Anwendung erstellen, die in der Lage ist, Eingabevorhersagen zu speichern und abzurufen.

Die Kombination aus FastAPI und NoSQL-Datenbank bietet eine leistungsstarke und flexible Umgebung für die Entwicklung und Skalierung KI-basierter Anwendungen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Das könnte Ihnen auch gefallen