مقدمة
عند تطوير تطبيقات بايثون، يُعد 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 بيئة قوية ومرنة لبناء وتوسيع نطاق التطبيقات القائمة على الذكاء الاصطناعي.









