![]() |
دليلك الشامل لتحسين أداء تطبيقات FastAPI بطرق احترافية |
دليل شامل عن FastAPI: إنشاء APIs حديثة وأداء عالي
FastAPI هي إطار عمل حديثة لإنشاء واجهات برمجة التطبيقات (APIs) بسهولة وسرعة، مع ميزات قوية مثل الأداء العالي ودعم الكتابة (Type Hints) بشكل مدمج. في هذا المقال، سنقدم دليلاً شاملاً حول FastAPI مع أمثلة عملية تساعدك على بدء العمل واستخدام الميزات المتقدمة بشكل احترافي ومتقدم.
قبل البداية احنا شرحنا الاساسيات والجزء الاول من المستوي المتقدم هتلاقيهم في المقالات التالية
1. ما هي FastAPI؟
تعريف بسيط:
FastAPI هي إطار عمل مفتوح المصدر مكتوب بلغة Python لتطوير APIs بسرعة مع ضمان الأداء العالي.
مميزاتها الرئيسية:
أداء مشابه لـ Node.js و Go بفضل Starlette و Pydantic.
دعم الكتابة التوضيحية (Type Hints) من Python، مما يجعل الأكواد أكثر وضوحًا وقابلة للصيانة.
توثيق تلقائي باستخدام OpenAPI و Swagger UI.
معالجة الأخطاء والطلبات بسهولة ودعم استجابات مخصصة.
دعم متكامل للمعايير الحديثة مثل OAuth2 و JSON Schema.
2. كيفية تثبيت FastAPI 🚀
خطوات التثبيت:
قم بتثبيت FastAPI باستخدام pip:
استخدم Uvicorn كخادم لتشغيل التطبيق:
تحقق من التثبيت عن طريق تشغيل تطبيق بسيط كما سنوضح أدناه.
3. إنشاء أول API باستخدام FastAPI ✨
كود بسيط لإنشاء API:
from fastapi import FastAPIapp = FastAPI()@app.get("/")def read_root():return {"message": "Welcome to FastAPI!"}@app.get("/items/{item_id}")def read_item(item_id: int, q: str = None):return {"item_id": item_id, "q": q}# لتشغيل التطبيق:# uvicorn main:app --reload
شرح الكود:
@app.get
: تُستخدم لتحديد المسارات (routes) للطلبات GET.item_id
: متغير ديناميكي يتم تمريره في URL.q
: معلمة اختيارية يمكن أن تتضمن استعلامًا إضافيًا.
إضافة تحسينات صغيرة:
يمكن تخصيص رسائل الأخطاء الافتراضية.
يمكنك إضافة استجابات مخصصة بناءً على المعايير.
![]() |
دليلك الشامل لتحسين أداء تطبيقات FastAPI بطرق احترافية |
4. التوثيق التلقائي للـ API 📄
ميزة التوثيق المدمج:
يمكنك زيارة المسار
/docs
للحصول على واجهة Swagger UI.يمكنك زيارة
/redoc
للحصول على توثيق ReDoc بمظهر مختلف.
مثال عملي:
شغل التطبيق:
uvicorn main:app --reloadافتح المتصفح وانتقل إلى:
http://127.0.0.1:8000/docs
5. التحقق من البيانات باستخدام Pydantic ✅
لماذا Pydantic؟
Pydantic تُستخدم للتحقق من البيانات بسهولة باستخدام نماذج (Models) لضمان صحة المدخلات.
مثال على التحقق من البيانات:
from fastapi import FastAPIfrom pydantic import BaseModelapp = FastAPI()class Item(BaseModel):name: strdescription: str = Noneprice: floattax: float = None@app.post("/items/")def create_item(item: Item):return {"item": item}
شرح الكود:
BaseModel
: يُستخدم لتعريف الهيكل المطلوب للبيانات المدخلة.عند إرسال طلب POST، يتم التحقق تلقائيًا من صحة البيانات المدخلة قبل معالجتها.
إضافة ميزات:
يمكنك إضافة تحقق مخصص مثل الطول الأدنى أو القيم الافتراضية للحقل.
6. الإعدادات المتقدمة (Advanced Configuration) ⚙️
إعداد الردود (Responses):
from fastapi import FastAPIfrom fastapi.responses import JSONResponseapp = FastAPI()@app.get("/custom-response")def custom_response():return JSONResponse(content={"message": "This is a custom response"})
الإعدادات المتقدمة للطلبات:
طلبات متعددة (Background Tasks):
from fastapi import FastAPI, BackgroundTasksapp = FastAPI()def write_log(message: str):with open("log.txt", "a") as f:f.write(message + "\n")@app.post("/log/")def log_message(message: str, background_tasks: BackgroundTasks):background_tasks.add_task(write_log, message)return {"message": "Message logged in the background"}
![]() |
دليلك الشامل لتحسين أداء تطبيقات FastAPI بطرق احترافية |
7. التعامل مع قواعد البيانات 🗄️
الاتصال بقاعدة بيانات باستخدام SQLAlchemy:
from fastapi import FastAPI, Dependsfrom sqlalchemy.orm import Sessionfrom database import engine, SessionLocal, Baseapp = FastAPI()# قم بإنشاء قاعدة البيانات والجداولBase.metadata.create_all(bind=engine)# توفير جلسة جديدة لكل طلبdef get_db():db = SessionLocal()try:yield dbfinally:db.close()@app.get("/users/")def read_users(skip: int = 0, limit: int = 10, db: Session = Depends(get_db)):return db.query(User).offset(skip).limit(limit).all()
مكتبة Tortoise-ORM كبديل:
تُستخدم Tortoise-ORM كبديل بسيط لـ SQLAlchemy، وتوفر سهولة أكبر في الإعداد.
8. نشر تطبيق FastAPI 🌐
نشر باستخدام Uvicorn و Gunicorn:
تثبيت Gunicorn:
pip install gunicornتشغيل التطبيق:
النشر على خدمات سحابية مثل AWS أو Heroku:
قم بإعداد ملف
requirements.txt
:fastapi uvicorn
ارفع المشروع إلى Heroku باستخدام Git.
![]() |
دليلك الشامل لتحسين أداء تطبيقات FastAPI بطرق احترافية |
9. أدوات مراقبة وتحليل الأداء 📊
استخدام Prometheus و Grafana:
لتحليل أداء التطبيق واستهلاك الموارد.
دمج مع Sentry:
لتتبع الأخطاء وتحليلها في الوقت الفعلي.
أدوات مراقبة وتحليل الأداء 📊
ما الذي تغطيه الفقرة؟
Prometheus و Grafana:
- Prometheus: أداة مفتوحة المصدر تُستخدم لجمع المقاييس والأداء في الوقت الفعلي.
- Grafana: واجهة مستخدم رسومية تُستخدم لتصور البيانات التي يجمعها Prometheus، مما يساعد في تحليل أداء التطبيق ورؤية استهلاك الموارد بشكل واضح.
Sentry:
- منصة تُستخدم لتتبع الأخطاء وتوفير تقارير مفصلة حول المشكلات التي تحدث في التطبيق.
- يمكن للمطورين استخدام Sentry لتحليل الأخطاء في الوقت الفعلي وتصحيحها بسرعة.
أهمية هذه الأدوات:
- تحسين الأداء: تساعدك هذه الأدوات في معرفة نقاط الضعف في التطبيق، مثل العمليات البطيئة أو استهلاك الموارد الزائد.
- تحليل الأخطاء: تمكّنك من استكشاف المشكلات التي قد تواجه المستخدمين وتصحيحها بشكل استباقي.
أمثلة واقعية:
- Prometheus و Grafana:
- قياس عدد الطلبات التي يعالجها التطبيق في الثانية (TPS).
- مراقبة استهلاك وحدة المعالجة المركزية (CPU) والذاكرة (RAM) للتأكد من أن التطبيق يعمل بكفاءة.
- Sentry:
- تتبع الخطأ الذي يحدث عند محاولة الوصول إلى قاعدة بيانات غير متوفرة.
- توفير تقرير يحتوي على الخطأ ومساره (Stack Trace) لتحديد السبب وإصلاحه.
نصيحة عملية:
يمكنك دمج هذه الأدوات بسهولة مع تطبيق FastAPI باستخدام مكتبات Python المخصصة لكل منها، مثل مكتبة prometheus_client
أو مكتبة Sentry SDK.
الخاتمة
FastAPI هو اختيار رائع للمطورين الذين يبحثون عن السرعة والكفاءة في بناء APIs حديثة. مع ميزات مثل التحقق التلقائي من البيانات والتوثيق المدمج، يمكنك التركيز على تطوير الميزات بدلاً من القلق بشأن الأداء. يمكن أيضًا تحسين الأداء باستخدام أدوات التحقق، إعدادات متقدمة، وتقنيات النشر المناسبة.