خادم ويب ASGI لبيثون.
التوثيق : https://www.uvicorn.org
Uvicorn هو تطبيق خادم ويب ASGI لـ Python.
حتى وقت قريب، كانت بايثون تفتقر إلى الحد الأدنى من واجهة الخادم/التطبيق ذات المستوى المنخفض للأطر غير المتزامنة. تسد مواصفات ASGI هذه الفجوة، وتعني أننا الآن قادرون على البدء في إنشاء مجموعة مشتركة من الأدوات القابلة للاستخدام عبر جميع الأطر غير المتزامنة.
يدعم Uvicorn HTTP/1.1 وWebSockets.
التثبيت باستخدام pip
:
$ pip install uvicorn
سيؤدي هذا إلى تثبيت uvicorn مع الحد الأدنى من التبعيات (Python الخالصة).
$ pip install ' uvicorn[standard] '
سيؤدي هذا إلى تثبيت uvicorn مع التبعيات "المستندة إلى Cython" (حيثما أمكن) وغيرها من "الإضافات الاختيارية".
في هذا السياق، تعني عبارة "المستندة إلى Cython" ما يلي:
uvloop
واستخدامها إن أمكن.httptools
إن أمكن.علاوة على ذلك، تعني عبارة "الإضافات الاختيارية" ما يلي:
websockets
(إذا كنت تريد استخدام wsproto
فستحتاج إلى تثبيته يدويًا) إن أمكن.--reload
في وضع التطوير watchfiles
.colorama
للسجلات الملونة.python-dotenv
إذا كنت تريد استخدام خيار --env-file
.PyYAML
للسماح لك بتوفير ملف .yaml
إلى --log-config
، إذا رغبت في ذلك. أنشئ تطبيقًا في example.py
:
async def app ( scope , receive , send ):
assert scope [ 'type' ] == 'http'
await send ({
'type' : 'http.response.start' ,
'status' : 200 ,
'headers' : [
( b'content-type' , b'text/plain' ),
],
})
await send ({
'type' : 'http.response.body' ,
'body' : b'Hello, world!' ,
})
تشغيل الخادم:
$ uvicorn example:app
بدأت معظم أطر عمل Python Web الراسخة كأطر عمل قائمة على WSGI.
تطبيقات WSGI عبارة عن تطبيق واحد متزامن قابل للاستدعاء يتلقى طلبًا ويعيد استجابة. لا يسمح هذا بالاتصالات طويلة الأمد، كما هو الحال مع اتصالات HTTP أو WebSocket طويلة الأمد، والتي لا يدعمها WSGI بشكل جيد.
يتيح وجود نموذج التزامن غير المتزامن أيضًا خيارات مثل مهام الخلفية الخفيفة، ويمكن أن يكون عاملاً أقل تقييدًا لنقاط النهاية التي تم حظرها لفترات طويلة على الإدخال/الإخراج للشبكة مثل التعامل مع طلبات HTTP البطيئة.
تكمن قوة بروتوكول ASGI في أنه يفصل تنفيذ الخادم عن إطار عمل التطبيق. وهذا يسمح بوجود نظام بيئي لخوادم الويب وأطر التطبيقات المتداخلة.
أول تطبيق لخادم ASGI، تم تطويره في الأصل لتشغيل قنوات Django، هو خادم الويب Daphne.
يتم تشغيله على نطاق واسع في الإنتاج، ويدعم HTTP/1.1، HTTP/2، وWebSockets.
يمكن أيضًا تشغيل أي من أمثلة التطبيقات الواردة هنا باستخدام daphne
بدلاً من ذلك.
$ pip install daphne
$ daphne app:App
كان Hypercorn في البداية جزءًا من إطار عمل الويب Quart، قبل أن يتم فصله إلى خادم ASGI مستقل.
يدعم Hypercorn HTTP/1.1 وHTTP/2 وWebSockets.
كما أنه يدعم إطار العمل trio
غير المتزامن الممتاز، كبديل لـ asyncio
.
$ pip install hypercorn
$ hypercorn app:App
Mangum هو محول لاستخدام تطبيقات ASGI مع AWS Lambda وAPI Gateway.
Granian هو خادم Rust HTTP متوافق مع ASGI ويدعم HTTP/2 وTLS وWebSockets.
Uvicorn هو كود مرخص من BSD.
مصممة ومصنوعة بعناية.
— ؟ —