كيفية إعداد تطبيق FastAPI مع قاعدة بيانات NoSQL؟

0 الأسهم
0
0
0
0

مقدمة

عند تطوير تطبيقات بايثون، يُعد FastAPI خيارًا ممتازًا بفضل سرعته وبساطته ودعمه للبرمجة غير المتزامنة. في هذا البرنامج التعليمي، سنستكشف إعداد FastAPI مع قاعدة بيانات NoSQL، التي توفر مرونةً وقابليةً للتوسع لإدارة البيانات المتنوعة.

المتطلبات الأساسية
  • خادم أوبونتو، مستخدم غير جذر لديه إمكانية الوصول إلى sudo وجدار حماية ممكّن.
  • مقدمة إلى سطر أوامر لينكس.
  • طلب sudo apt-get update قم بتشغيل محطة Ubuntu للتأكد من أن نظامك يحتوي على أحدث الإصدارات وتحديثات الأمان الخاصة بالبرامج المتوفرة في مستودعات النظام.

ملاحظة: هذه التعليمات صالحة لأحدث إصدارات أوبونتو: أوبونتو 24.04، أوبونتو 22.04، وأوبونتو 20.04. إذا كنت تستخدم أوبونتو 18.04 أو إصدارًا أقدم، فننصحك بالترقية إلى إصدار أحدث، لأن أوبونتو لم يعد يدعم هذه الإصدارات.

الخطوة 1 - إعداد بيئة Python على نظامك

خلال هذا البرنامج التعليمي، سنستخدم حزمة python3 لتشغيل الأوامر. تأتي الإصدارات الأحدث من أوبونتو مُثبّتة افتراضيًا مع Python 3، لذا للتحقق من تثبيته، شغّل الأمر التالي:

python3 --version

إذا أعاد هذا الأمر خطأً، فيمكنك تثبيت الحزمة أو إعادة تثبيتها عن طريق تشغيل الأمر التالي:

sudo apt-get install python3

بعد ذلك، ستحتاج إلى تثبيت pip لتثبيت حزم Python وتبعياتها بأمان.

sudo apt-get install python3-pip

الخطوة 2 – إنشاء بيئة افتراضية

إذا كنت تستخدم إصدار Ubuntu < 24.04، فلن تحتاج إلى إنشاء بيئة افتراضية، ولكن من الأفضل فصل تبعيات المشروع.

بدءًا من Python 3.11 وpip 22.3، تم تقديم PEP 668 جديد يضع علامة على بيئات Python الأساسية باعتبارها "مدارة خارجيًا"، مما يعني أنه لا يمكنك استخدام pip بنجاح لتثبيت الحزم إلا إذا كنت تعمل في بيئة افتراضية. افعلها.

في هذه الخطوة، ستُنشئ بيئة افتراضية لمشروعك تُعزل تبعيات المشروع لمنع أي مشاكل محتملة بين إصدارات الحزم المختلفة. شغّل الأوامر التالية في الطرفية:

sudo apt-get install python3-venv

تم إغلاق هذا الأمر. فينف سيقوم بتثبيت ما هو مطلوب لإنشاء بيئة افتراضية.

python3 -m venv fastapi-env

يقوم هذا الأمر بإنشاء بيئة افتراضية تسمى fastapi-env سيُنشئ مجلدًا داخل مجلد عملك. لبدء العمل في هذه البيئة، يجب تفعيله.

source fastapi-env/bin/activate

إذا نجحت العملية، فسوف ترى معاينة المحطة الطرفية معروضة على النحو التالي:

(fastapi-env) user@machine:~$

الآن يمكنك البدء في تثبيت التبعيات المطلوبة داخل هذه البيئة الافتراضية.

الخطوة 3 – تثبيت المكتبات والحزم المطلوبة

في هذه الخطوة، سوف تقوم بتثبيت بعض الحزم والمكتبات المطلوبة لمتابعة هذا البرنامج التعليمي بنجاح.

أولا عن طريق التثبيت واجهة برمجة التطبيقات السريعة سنبدأ بما هو مطلوب لبناء التطبيق الخاص بك، ثم يوفيكورن ما هو المطلوب لتشغيل تطبيق FastAPI.

pip install fastapi uvicorn

في هذا البرنامج التعليمي، سنستخدم MongoDB كقاعدة بيانات NoSQL. للتفاعل مع MongoDB من داخل FastAPI، ستحتاج إلى: محرك قم بتثبيت ، وهو برنامج تشغيل 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

في حال نجاح هذا الأمر، سيُعيد مُعامل الصدى. الآن، قم بتحديث سريع:

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. في مجلد العمل، أنشئ ملفًا باسم قاعدة بيانات.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

على افتراض أن المجموعة مجموعتي من قاعدة البيانات قاعدة بياناتي إنه مليء بالبيانات، والآن تحتاج إلى ملف main.py أنشئ فئةً تحتوي على منطق تطبيقك. في تطبيق FastAPI أدناه، اتصل بقاعدة البيانات عبر قاعدة بيانات.py تم تأسيسها وتحديد مساراتها لتنبؤات الذكاء الاصطناعي. تُستخدم هذه المسارات للتحقق من صحة المدخلات.

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:الطرق /أغراض/ و نشر /العناصر/ إنها تسمح لك باسترجاع العناصر واستيرادها من مجموعة 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. يمكنك الوصول إليها عبر العنوان 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}'

نتيجة

في هذا البرنامج التعليمي، تعلمت كيفية نشر تطبيق FastAPI بنجاح باستخدام MongoDB وإنشاء تطبيق بسيط يعتمد على الذكاء الاصطناعي وقادر على تخزين واسترجاع تنبؤات الإدخال.

يوفر الجمع بين FastAPI وقاعدة بيانات NoSQL بيئة قوية ومرنة لبناء وتوسيع نطاق التطبيقات القائمة على الذكاء الاصطناعي.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

قد يعجبك أيضاً