איך להגדיר אפליקציית Fast API עם בסיס נתונים NoSQL

הקדם

בזמן שפיתחות יישומים בפייתון, FastAPI מתפרסם כבחירה עיקרית לבניית פתרונות בעלי ביצועים גבוהים. הוא מעניק מהירות, פשטות ותמיכה בתכנות אסינכרוני, מה שהוא מושלם לפיתוח יישומים מודרניים, סקלאבליים.
במדריך הלימוד הזה, אנחנו נדבר אתכם דרך תהליך ההגדרה של יישומות FastAPI עם בסיס נוסף לנתונים (NoSQL). כשמגיע לאחסון וניהול מידע, בסיסים ה NoSQL מציעים גמישות והתאמה, מה שהוא מועדף ליישומים שצריכים להתמודד עם מבנים מאגר מגוונים ומורכבים.

דרישות

לפני שיתחילו, עליכם לוודא שיש לכם את הדברים הבאים:

  • שרת פועל בעזרת Ubuntu ביחד עם משתמש לא כולני עם זכויות sudo ומערך חיצון פעיל. עבור הוראות על איך להגדיר את זה, בבקשה בחרו את החלון הזה מרשימת זהועיצבו את הדרכנו להגדרת השרת הראשון. בהתחשב בזאת, תוודאו לעבוד עם גרסהתמיכהשל 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, אז כדי לבדוק את ההתקנה שלו, בואו נבצע את ההוראה הבאה:

python3 --version

במקרה שזה יחזיר שגיאה, תוכל להתקין/לשנות בעזרת ההוראה הבאה:

sudo apt-get install python3

בהמשך, עליך להתקין את pip כדי להתקין ערכים Python והתלותיהם בדרך בטוחה.

sudo apt-get install python3-pip

שלב 2 – יצירת סביבת מעטפת

אם אתה משתמש בגירסא של Ubuntu < 24.04, לא נדרשת ליצור סביבת מעטפת, אך זה מנהג טוב להפריד את התלותים של הפרוייקט שלך.

מהדבר החדש של PEP 668 ב- Python 3.11 ו- pip 22.3 אומר על המתייחסות לסביבות בסיס פיתוח פונקציות Python כ "ניהלות חיצונית", מה שאומר שאתה לא יוכל להשתמש ב- pip כדי להתקין ערכים בהצלחה אלא אם אתה עובד בסביבה מדומה.

בשלב זה, תיצור סביבה מדומה לפרוייקט שלך שתאילץ על בידוד התלותות של הפרוייקט שלך כדי למנוע סכסוכים בין גרסאות שונות של ערכים אחרים. בעזרת הקומאנד הבא, יש להריץ את התוצאה הבאה:

sudo apt-get install python3-venv

זה יתקין את הערך venv הנחוץ על מנת ליצור סביבה מדומה.

python3 -m venv fastapi-env

בפעם הזו, הפקת הקומאנד ייצר סביבה מדומה בשם fastapi-env בתוך התיקייה העבודה שלך. כדי להתחיל לעבוד בתוך הסביבה הזו, צריך להפעילה.

source fastapi-env/bin/activate

אחרי ההוצאה המוצלחת, תראה שהתוצאה הקודמת מופרעת כך:

(fastapi-env) user@machine:~$

עכשיו, תוכל להתחיל בהתקנת התלותות הנחוצות בסביבה המדומה הזו.

שלב 3 – התקנת הספקים הנחוצים

בשלב זה, תתקנים קטעים ספציפיים שנדרשים כדי לעבוד בהוראת המסע.

בואו נתחיל בהתקנת fastapi, שהוא נדרש כדי לבנות את היישומך של FastAPI, וuvicorn, שהוא נדרש כדי להפעיל את היישומך של FastAPI.

pip install fastapi uvicorn

בהדרכה זו, נהיה משתמשים ב MongoDB כבסיס נתונים NoSQL. כדי לתקשר עם MongoDB מתוך FastAPI, צריך להתקנת motor, שהוא נהג פיתוח פתוח בעל תאמה ל Python עבור MongoDB.

pip install motor

שלב 4 – התקנה והגדרת MongoDB על Ubuntu

כדי להתקנת MongoDB על המחשב שלך ב Ubuntu, צרך להריץ את התוך הפקודות הבאות בתוך התמנון:

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.

בשלב הבא, צריך להתקנת תלוית openssl על המערכת שנדרשת עבור התקנת MongoDB.

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. בתוך התיקייה העבודה שלך, יצירות קובץ database.py:

nano database.py

זה יפתח מחשב טקסט ריק. כאן תכתב את ההגיון לקישור לבסיס נתונים שלך.

database.py
from motor.motor_asyncio import AsyncIOMotorClient

MONGO_DETAILS = "mongodb://localhost:27017"

client = AsyncIOMotorClient(MONGO_DETAILS)

db = client.mydatabase

collection = db.mycollection

מנבאת שבסיס נתונים mycollection של mydatabase מופלא עם מספר נתונים, אתה עכשיו יוצר קובץ main.py שמחזיק את ההגיון של היישומון שלך. ביישומון FastAPI הבא, קישור לבסיס נתונים נעשה בעזרת הנתונים ב database.py נתונים מוגדלים עבור התחבורה.

nano main.py

במחשב טקסט הזה, כתבו את ההגיון:

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()

# מערך פשוט ומודל
x = np.array([[1], [2], [3], [4], [5]])
y = np.array([2, 4, 6, 8, 10])

model = LinearRegressions()
model.fit(x, y)

# הגדרת מודל Pydantic לאישור הקלט
class InputData(BaseModel):
  feature: float

# מסלול route_1 עבור הערכת היצוא בהתבסס על תכונה קדם
@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 ליצור אינטראקציה עם MongoDB
@app.get("/items/")
async def get_item():
  items = []
  async for item in collection.find():
    items.append(item)
  return items

# מסלול route_3 להוספת חלק חדש ל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: זה הגדר את מבנה המידע הצפוי לנקודת ההערכה. במקרה זה, זה עשירית.
  • נתיבים MongoDB: הנתיבים /items/ ו 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 ייצר באופן אוטומטי מידע שימושי של ה API בעזרת Swagger UI. ניתן לגשת אליו על ידי ניווט אל 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 תרגום הסיכום בסיום ההדרכה הזו, למידע נוסף על איך להגדיל את היישומך באמצעות דוקר פילים וכיצד לשמור על מערכת מתאימה. כדי להגדיר את היישומך כעל קומפוזידר דוקר, עבודה מוסכמת בעזרת הדוקר שלך והדרך בה היישומך מופיע. כאשר היישומך מוגדר, ניתן להגדיל את היישומך בקל ובזול, אתם יכולים להגדיל את היישומך באופן מוגדר.

סיכום

בהדרכה הזו, למדת איך להגדיל יישום FastAPI עם MongoDB, ויצרת יישום פשוט על-בסיס AI שמסוגל לאחסן ולהוציא הערכים מודעות.

השילוב של FastAPI ובסיס נוסף לנתונים מציע סביבה חזקה ומתאימה לבניית והגדלת יישומים מונעים על-בסיס AI.

Source:
https://www.digitalocean.com/community/tutorials/set-up-fastapi-app-with-nosql-db