Uvicorn: دليل شامل لخادم ASGI لتطبيقات FastAPI و Django

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

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

ابدأ الدورة

Uvicorn: الدليل الشامل لخادم ASGI عالي الأداء

ما هو Uvicorn

Uvicorn هو خادم ASGI حديث، خفيف الوزن وعالي الأداء، مكتوب بلغة Python. صُمم خصيصًا لتشغيل تطبيقات الويب غير المتزامنة (asynchronous)، ويُعتبر من أسرع الخوادم لتطبيقات Python. يعتمد Uvicorn على مكتبتي uvloop و httptools، مما يمنحه أداءً استثنائيًا عند معالجة عدد كبير من الطلبات المتزامنة.

يدعم الخادم بروتوكولات وتقنيات ويب حديثة، بما في ذلك HTTP/1.1 و WebSocket، ويمكنه العمل مع أي إطار عمل متوافق مع ASGI مثل FastAPI و Starlette و Django Channels وغيرها.

المزايا والخصائص الرئيسية

المزايا المعمارية

يمثل Uvicorn قفزة نوعية في عالم خوادم الويب Python بفضل الميزات التالية:

عدم التزامن على مستوى النواة — يستخدم بنية تعتمد على الأحداث (event-driven)، مما يسمح بمعالجة آلاف الاتصالات المتزامنة بأقل استهلاك للموارد.

أداء عالٍ — بفضل التكامل مع uvloop (تطبيق سريع لـ asyncio) و httptools (محلل HTTP سريع)، يُظهر Uvicorn أداءً يُضاهي خوادم Go و Node.js.

دعم البروتوكولات الحديثة — دعم أصلي لـ WebSocket و HTTP/1.1، بالإضافة إلى إمكانية العمل مع HTTP/2 عبر بروكسي إضافي.

متطلبات نظام ضئيلة — مُحسّن للعمل على أجهزة المطورين المحلية وخوادم الإنتاج على حد سواء.

الخصائص التقنية

يطبق Uvicorn مواصفات ASGI 3.0، مما يجعله متوافقًا مع مجموعة واسعة من أطر عمل Python الحديثة. يدعم الخادم الكشف التلقائي عن التغييرات في الكود أثناء التطوير، ووضع المعالجة المتعددة (multi-process) للإنتاج، ونظام تهيئة مرن.

المقارنة بين ASGI و WSGI

فهم الفروق بين ASGI و WSGI أمر بالغ الأهمية لاختيار الخادم المناسب:

الخاصية WSGI (واجهة بوابة خادم الويب) ASGI (واجهة بوابة خادم غير متزامن)
نموذج التنفيذ متزامن (Synchronous)، حظر (Blocking) غير متزامن (Asynchronous)، غير حظر (Non-blocking)
دعم async/await لا دعم كامل
WebSocket غير مدعوم دعم أصلي
HTTP/2 دعم محدود دعم كامل
المهام الخلفية تتطلب عمليات منفصلة دعم مدمج
الأداء محدود بعدد الخيوط (threads) عالٍ بفضل حلقة الأحداث (event loop)
أمثلة على الخوادم Gunicorn, uWSGI, mod_wsgi Uvicorn, Hypercorn, Daphne
أطر العمل Flask, Django (قبل 3.0), Bottle FastAPI, Starlette, Django 3.0+, Quart

ASGI هو تطور طبيعي لـ WSGI، مصمم لتطبيقات الويب الحديثة التي تتطلب أداءً عاليًا ودعمًا للوظائف في الوقت الفعلي (real-time).

التثبيت والإعداد الأولي

التثبيت عبر pip

pip install uvicorn

التثبيت مع التبعيات الإضافية

# للحصول على أقصى أداء
pip install uvicorn[standard]

# يشمل uvloop, httptools, websockets, watchgod, python-dotenv

مثال تطبيقي بسيط

أنشئ ملفًا باسم main.py:

fro                    

توصيات