مقدمة عن Quart
Quart هو إطار ويب غير متزامن حديث للغة Python، يمثل تطورًا للإطار الشهير Flask مع دعم كامل للبرمجة غير المتزامنة. يعتمد Quart على asyncio، مما يوفر أداءً عاليًا وقابلية توسع ممتازة، مع الحفاظ على التوافق مع واجهة Flask API. هذا يجعله الخيار الأمثل للمطورين الذين يرغبون في الانتقال من البرمجة المتزامنة إلى غير المتزامنة دون تغييرات جذرية في بنية التطبيق.
ما هو Quart ولماذا تحتاجه
تم تصميم Quart لحل قيود Flask في مجال البرمجة غير المتزامنة. يتيح لك استخدام async def في جميع أجزاء التطبيق: معالجات المسارات، الوسائط البرمجية (middleware)، الخطافات (hooks)، والاختبارات. هذا مهم بشكل خاص لتطبيقات الويب الحديثة التي تتعامل غالبًا مع واجهات برمجية خارجية (APIs)، قواعد البيانات، وتتطلب إنتاجية عالية.
المزايا الرئيسية لـ Quart
يوفر Quart للمطورين العديد من المزايا مقارنة بالأطر المتزامنة التقليدية:
- غير متزامن بالكامل: يمكن تنفيذ جميع العمليات بشكل غير متزامن
- أداء عالٍ: أداء أفضل بكثير تحت الأحمال العالية
- دعم مدمج لـ WebSocket: دعم أصلي لـ WebSocket بدون إضافات إضافية
- توافق مع Flask: ترقية سهلة لتطبيقات Flask الحالية
- معايير ويب حديثة: دعم SSE، HTTP/2، وتقنيات حديثة أخرى
مقارنة بين Quart و Flask
| الميزة | Flask | Quart |
|---|---|---|
| البرمجة غير المتزامنة | محدودة (منذ Flask 2.0+) | دعم كامل لـ asyncio |
| WebSocket | يتطلب إضافات | دعم مدمج |
| التوافق مع Flask | نعم | نعم (عالٍ) |
| نوع الخادم | WSGI | ASGI (عبر Hypercorn/Uvicorn) |
| الأداء | متوسط | عالٍ |
| دعم HTTP/2 | لا | نعم |
| أحداث الخادم (SSE) | صعب | دعم مدمج |
| المهام الخلفية | عبر Celery | أصليًا عبر asyncio |
التثبيت وإعداد البيئة
تثبيت Quart
للبدء مع Quart، يجب تثبيت الحزمة الأساسية:
pip install quart
تثبيت خادم ASGI
يتطلب Quart خادم ASGI للتشغيل. يُوصى باستخدام Hypercorn:
pip install hypercorn
بدلاً من ذلك، يمكن استخدام Uvicorn:
pip install uvicorn
التبعيات الإضافية
للعمل الكامل مع ميزات Quart المختلفة، يُوصى بتثبيت:
pip install quart[dotenv] # للعمل مع ملفات .env
pip install quart-cors # لدعم CORS
pip install quart-schema # للتحقق من صحة البيانات
إنشاء أول تطبيق
تطبيق أساسي
from quart import Quart
app = Quart(__name__)
@app.route('/')
async def hello():
return 'مرحبًا من Quart!'
@app.route('/health')
async def health():
return {'status': 'healthy', 'framework': 'Quart'}
if __name__ == '__main__':
app.run(debug=True)
تشغيل التطبيق
هناك عدة طرق لتشغيل تطبيق Quart:
عبر خادم التطوير المدمج:
python app.py
عبر Hypercorn (مُوصى به):
أيضاً في المكتبة
توصيات