خنقتونا خنقتونا
random

آخر الأخبار

random
random
جاري التحميل ...

دليلك الشامل لتحسين أداء تطبيقات FastAPI بطرق احترافية

 

دليلك الشامل لتحسين أداء تطبيقات FastAPI بطرق احترافية

دليل شامل عن FastAPI: إنشاء APIs حديثة وأداء عالي

FastAPI هي إطار عمل حديثة لإنشاء واجهات برمجة التطبيقات (APIs) بسهولة وسرعة، مع ميزات قوية مثل الأداء العالي ودعم الكتابة (Type Hints) بشكل مدمج. في هذا المقال، سنقدم دليلاً شاملاً حول FastAPI مع أمثلة عملية تساعدك على بدء العمل واستخدام الميزات المتقدمة بشكل احترافي ومتقدم.


قبل البداية احنا شرحنا الاساسيات والجزء الاول من المستوي المتقدم هتلاقيهم في المقالات التالية 

  1. 🧑‍💻🌟المقالات والكورسات 🌐🐍

1. ما هي FastAPI؟

تعريف بسيط:

FastAPI هي إطار عمل مفتوح المصدر مكتوب بلغة Python لتطوير APIs بسرعة مع ضمان الأداء العالي.

مميزاتها الرئيسية:

  • أداء مشابه لـ Node.js و Go بفضل Starlette و Pydantic.

  • دعم الكتابة التوضيحية (Type Hints) من Python، مما يجعل الأكواد أكثر وضوحًا وقابلة للصيانة.

  • توثيق تلقائي باستخدام OpenAPI و Swagger UI.

  • معالجة الأخطاء والطلبات بسهولة ودعم استجابات مخصصة.

  • دعم متكامل للمعايير الحديثة مثل OAuth2 و JSON Schema.


2. كيفية تثبيت FastAPI 🚀

خطوات التثبيت:

  1. قم بتثبيت FastAPI باستخدام pip:

pip install fastapi[all]
استخدم Uvicorn كخادم لتشغيل التطبيق:
pip install uvicorn
تحقق من التثبيت عن طريق تشغيل تطبيق بسيط كما سنوضح أدناه.

3. إنشاء أول API باستخدام FastAPI

كود بسيط لإنشاء API:

from fastapi import FastAPI

app = 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 بمظهر مختلف.

مثال عملي:

  1. شغل التطبيق:

    uvicorn main:app --reload

    افتح المتصفح وانتقل إلى:

http://127.0.0.1:8000/docs

5. التحقق من البيانات باستخدام Pydantic

لماذا Pydantic؟

Pydantic تُستخدم للتحقق من البيانات بسهولة باستخدام نماذج (Models) لضمان صحة المدخلات.

مثال على التحقق من البيانات:

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Item(BaseModel):
    name: str
    description: str = None
    price: float
    tax: float = None

@app.post("/items/")
def create_item(item: Item):
    return {"item": item}

شرح الكود:

  • BaseModel: يُستخدم لتعريف الهيكل المطلوب للبيانات المدخلة.

  • عند إرسال طلب POST، يتم التحقق تلقائيًا من صحة البيانات المدخلة قبل معالجتها.

إضافة ميزات:

  • يمكنك إضافة تحقق مخصص مثل الطول الأدنى أو القيم الافتراضية للحقل.


6. الإعدادات المتقدمة (Advanced Configuration) ⚙️

إعداد الردود (Responses):

from fastapi import FastAPI
from fastapi.responses import JSONResponse
app = FastAPI()

@app.get("/custom-response")


def custom_response():
    return JSONResponse(content={"message": "This is a custom response"})

الإعدادات المتقدمة للطلبات:

  • طلبات متعددة (Background Tasks):

from fastapi import FastAPI, BackgroundTasks

app = 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, Depends
from sqlalchemy.orm import Session
from database import engine, SessionLocal, Base

app = FastAPI()

# قم بإنشاء قاعدة البيانات والجداول
Base.metadata.create_all(bind=engine)

# توفير جلسة جديدة لكل طلب
def get_db():
    db = SessionLocal()
    try:
        yield db
    finally:
        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:

  1. تثبيت Gunicorn:

    pip install gunicorn
    تشغيل التطبيق:
gunicorn -k uvicorn.workers.UvicornWorker main:app

النشر على خدمات سحابية مثل AWS أو Heroku:

  1. قم بإعداد ملف requirements.txt:

    fastapi
    uvicorn
  2. ارفع المشروع إلى Heroku باستخدام Git.


دليلك الشامل لتحسين أداء تطبيقات FastAPI بطرق احترافية


9. أدوات مراقبة وتحليل الأداء 📊

استخدام Prometheus و Grafana:

لتحليل أداء التطبيق واستهلاك الموارد.

دمج مع Sentry:

لتتبع الأخطاء وتحليلها في الوقت الفعلي.


أدوات مراقبة وتحليل الأداء 📊

ما الذي تغطيه الفقرة؟

  1. Prometheus و Grafana:

    • Prometheus: أداة مفتوحة المصدر تُستخدم لجمع المقاييس والأداء في الوقت الفعلي.
    • Grafana: واجهة مستخدم رسومية تُستخدم لتصور البيانات التي يجمعها Prometheus، مما يساعد في تحليل أداء التطبيق ورؤية استهلاك الموارد بشكل واضح.
  2. Sentry:

    • منصة تُستخدم لتتبع الأخطاء وتوفير تقارير مفصلة حول المشكلات التي تحدث في التطبيق.
    • يمكن للمطورين استخدام Sentry لتحليل الأخطاء في الوقت الفعلي وتصحيحها بسرعة.

أهمية هذه الأدوات:

  • تحسين الأداء: تساعدك هذه الأدوات في معرفة نقاط الضعف في التطبيق، مثل العمليات البطيئة أو استهلاك الموارد الزائد.
  • تحليل الأخطاء: تمكّنك من استكشاف المشكلات التي قد تواجه المستخدمين وتصحيحها بشكل استباقي.

أمثلة واقعية:

  1. Prometheus و Grafana:
    • قياس عدد الطلبات التي يعالجها التطبيق في الثانية (TPS).
    • مراقبة استهلاك وحدة المعالجة المركزية (CPU) والذاكرة (RAM) للتأكد من أن التطبيق يعمل بكفاءة.
  2. Sentry:
    • تتبع الخطأ الذي يحدث عند محاولة الوصول إلى قاعدة بيانات غير متوفرة.
    • توفير تقرير يحتوي على الخطأ ومساره (Stack Trace) لتحديد السبب وإصلاحه.

نصيحة عملية:

يمكنك دمج هذه الأدوات بسهولة مع تطبيق FastAPI باستخدام مكتبات Python المخصصة لكل منها، مثل مكتبة prometheus_client أو مكتبة Sentry SDK.


الخاتمة

FastAPI هو اختيار رائع للمطورين الذين يبحثون عن السرعة والكفاءة في بناء APIs حديثة. مع ميزات مثل التحقق التلقائي من البيانات والتوثيق المدمج، يمكنك التركيز على تطوير الميزات بدلاً من القلق بشأن الأداء. يمكن أيضًا تحسين الأداء باستخدام أدوات التحقق، إعدادات متقدمة، وتقنيات النشر المناسبة.

عن الكاتب

Mahmoud Salman

التعليقات


اتصل بنا

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

تابع المدونة من هنا

مواقيت الصلاة من هنا

مشاركة مميزة

Mastering Data Structures in Python: الإبداع والكفاءة في البرمجة المتقدمة🚀

  Mastering Data Structures in Python: الإبداع والكفاءة في البرمجة المتقدمة 🚀 الهياكل المتقدمة للبيانات في بايثون: دليل عملي للمطورين المحت...

جميع الحقوق محفوظة

خنقتونا