Starlette: أساس FastAPI وأفضل إطار عمل غير متزامن للبايثون

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة

Starlette هو إطار عمل ويب غير متزامن حديث وعالي الأداء للغة Python، ويُعد الأساس الذي بُني عليه إطار FastAPI الشهير. صُمم خصيصًا للعمل مع ASGI (واجهة بوابة الخادم غير المتزامنة)، ويمنح Starlette المطورين أدوات قوية لبناء تطبيقات ويب سريعة وقابلة للتوسع. في هذا المقال، سنستعرض بالتفصيل جميع جوانب العمل مع هذا الإطار، وإمكانياته، ومزاياه.

ما هو Starlette

تاريخ المشروع وأهدافه

تم إنشاء Starlette بواسطة توم كريستنسن (Tom Christie)، المطور المعروف لإطار Django REST Framework. ظهر المشروع في عام 2018 بهدف توفير أداة خفيفة الوزن لكنها قوية للمطورين لبناء تطبيقات ويب غير متزامنة بلغة Python. الفلسفة الأساسية لـ Starlette هي تقديم إطار عمل بسيط لكنه غني بالوظائف، دون فرض حلول محددة على المطور.

الميزات الرئيسية للإطار

يتميز Starlette بعدة خصائص رئيسية تجعله جذابًا لتطوير الويب الحديث:

  • دعم كامل لـ ASGI — يضمن أقصى توافق مع الخوادم غير المتزامنة الحديثة
  • غير متزامن أصلي — جميع مكونات الإطار صُممت باستخدام صيغة async/await
  • هندسة بسيطة — يوفر المكونات الأساسية فقط دون إثقالها بالوظائف الزائدة
  • أداء عالٍ — يُظهر نتائج ممتازة في سرعة معالجة الطلبات
  • قابلية التعديل — يسمح باستخدام المكونات المطلوبة فقط
  • سهولة الاختبار — يتضمن أدوات مدمجة لكتابة الاختبارات

كيف يرتبط Starlette بـ FastAPI

هندسة FastAPI: استخدام Starlette كأساس

تم بناء FastAPI فوق Starlette، مستخدمًا إياه كطبقة أساسية لمعالجة طلبات HTTP والتوجيه والوسائط الوسيطة (middleware). هذا يسمح لـ FastAPI بالتركيز على توفير ميزات إضافية مثل التحقق التلقائي من البيانات، وإنشاء توثيق OpenAPI، والتكامل مع Pydantic، مع الحفاظ على أداء ومرونة Starlette.

لماذا اختار FastAPI Starlette كأساس

يعود اختيار Starlette كأساس لـ FastAPI إلى عدة عوامل:

  • الأداء — يُظهر Starlette نتائج ممتازة في اختبارات الأداء
  • التوافق مع ASGI — دعم كامل للمعيار الحديث لتطبيقات الويب غير المتزامنة
  • استقرار الهندسة — قاعدة كودية مدروسة جيدًا ومختبرة
  • مجتمع نشط — تحديثات منتظمة ودعم من المطورين

مزايا الأداء وعدم التزامن

دعم ASGI والاستدعاءات غير المتزامنة

ASGI (واجهة بوابة الخادم غير المتزامنة) هو معيار جديد حل محل WSGI للتطبيقات غير المتزامنة. Starlette متوافق تمامًا مع ASGI، مما يسمح بـ:

  • معالجة آلاف الاتصالات المتزامنة
  • العمل بكفاءة مع اتصالات WebSocket
  • استخدام الخوادم غير المتزامنة الحديثة مثل Uvicorn و Hypercorn
  • التكامل مع قواعد البيانات غير المتزامنة وواجهات API الخارجية

مقارنة الأداء مع أطر WSGI

على عكس أطر WSGI التقليدية (Flask, Django)، يوفر Starlette:

  • إدخال/إخراج غير محظور — الطلبات لا تمنع بعضها البعض
  • إنتاجية عالية — القدرة على معالجة المزيد من الطلبات في الثانية
  • استخدام فعال للموارد — استهلاك أقل للذاكرة

توصيات