9 خوادم ويب Python لتجربتها في مشروعك التالي

في هذه القائمة ، نقدم العديد من خوادم ويب Python التي يمكنك استخدامها لنشر تطبيقات Python الخاصة بك.

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

هيا نبدأ!

ما هو خادم الويب؟

عند تطوير تطبيق Python ، ستستخدم خادم التطوير لاختبار تطبيقك. ومع ذلك ، بمجرد اكتمال التطوير ، سيتعين عليك نشر تطبيقك على خادم إنتاجي. من بين عدة طبقات من الوظائف المضافة في الأعلى ، يجب أن يتمتع خادم الويب بالوظائف الأساسية لخادم HTTP.

يجب أن يكون خادم الويب Python قادرًا على معالجة طلبات HTTP (طلبات HTTP البسيطة مثل GET و PUT و POST) من العملاء ، مثل متصفحات الويب ، وإرجاع الاستجابة. قد تتضمن هذه الاستجابة رمز حالة HTTP الذي يشير إلى ما إذا تمت معالجة الطلب بنجاح أم لا. قد تتكون من صفحات ويب HTML وبيانات شبه منظمة مثل JSON و XML والمزيد.

ASGI مقابل WSGI: فهم واجهات بوابة الخادم

لنفترض أنك قمت بتطوير تطبيق Python في إطار من اختيارك ، على سبيل المثال ، Django أو Flask. قد يكون الخادم التقليدي غير قادر على فهم ومعالجة الطلبات الموجهة إلى تطبيق Python. هنا يأتي دور واجهات بوابة الخادم.

يمكن أن تكون واجهة البوابة هذه واجهة بوابة خادم الويب (WSGI) أو واجهة بوابة خادم غير متزامنة (ASGI). يتلقى خادم الويب طلبًا من العميل ، ثم يقوم بإعادة التوجيه إلى واجهة بوابة الخادم. تتفاعل الواجهة (WSGI / ASGI) مع تطبيق Python من خلال استدعاء مكشوف.

تعالج واجهة عبّارة خادم الويب (WSGI) الطلبات بالتسلسل. إذا كان هناك العديد من طلبات HTTP البطيئة ، فستؤثر على معدل النقل.

واجهة بوابة الخادم غير المتزامنة ، أو ASGI ، هي خليفة لـ WSGI ولديها قدرة إضافية على معالجة الطلبات بشكل غير متزامن.

  كيفية تعطيل عناوين Wi-Fi MAC الخاصة على iPhone و iPad

افترض أن الطلب الذي تتم خدمته حاليًا يتطلب قراءة قاعدة بيانات (قد تستغرق وقتًا طويلاً) وينتظر الاستجابة. عندما ينتظر الطلب الأول استجابة ، يمكن لـ ASGI معالجة الطلب الوارد الثاني.

هذا على عكس WSGI ، حيث يجب معالجة الطلب الأول للطلب الثاني. لذلك ، قد يؤدي استخدام ASGI إلى زيادة الإنتاجية. يتيح لك ASGI أيضًا استخدام إمكانات Python غير المتزامنة داخل تطبيقك.

خوادم ويب بايثون

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

يوفيكورن

إذا كنت معتادًا على تطوير التطبيقات باستخدام FastAPI ، فستواجه Uvicorn ، وهو تطبيق لخادم الويب. Uvicorn هو تطبيق خادم ASGI لبيثون.

لتثبيت Uvicorn والتبعيات المرتبطة به باستخدام pip ، قم بتشغيل الأمر التالي:

$ pip install uvicorn[standard] 
# includes installation of optional and Cython-based dependencies

فيما يلي السمات البارزة لـ Uvicorn:

  • تنفيذ ASGI
  • دعم لتشغيل التطبيقات من بيئة Python غير المتزامنة
  • أداة سطر الأوامر مع قائمة واسعة من الخيارات
  • يدعم تشغيل التطبيقات من وظائف المصنع
  • يوفر ميزات للتحكم في مثيلات الخادم برمجيًا

جونيكورن

Gunicorn هو خادم WSGI لتطبيقات Python ، وهو معروف جيدًا بميزات إدارة العمليات المتقدمة.

يوفر Uvicorn فئة عمال Gunicorn ، مما يتيح لك تحقيق مزايا إدارة الأداء والعملية في وقت واحد. تحتوي صفحة التوثيق هذه على تفاصيل حول نشر Gunicorn.

إذا كان لديك Python 3.5 والإصدارات الأحدث ، فيمكنك تثبيت Gunicorn باستخدام pip:

$ pip install gunicorn

فيما يلي السمات البارزة لـ Gunicorn:

  • بسيط وسريع
  • متوافق مع العديد من أطر الويب
  • دعم للاستخدام مع خادم وكيل HTTP
  • إدارة العمليات المتقدمة

الكرز

CherryPy هو إطار عمل ويب Python – تمامًا مثل Django و Flask و FastAPI – ولكنه ليس شائعًا مثل هذه الأطر. مع العديد من الإصدارات المستقرة ، كان CherryPy موجودًا وتطور إلى إطار عمل كامل لأكثر من عقد من الزمان. كما أن لديها مجتمع مطورين داعمين.

يمكنك التحقق من Zen of CherryPy المثير للاهتمام ، والذي ينقل جوهر أن CherryPy هو إطار بسيط وبسيط ولكنه قوي.

  كيفية التحقق مما إذا كان شخص ما قد قرأ بريدك الإلكتروني

CherryPy هو إطار عمل Python وليس خادم ويب ، ولكنه مدرج في قائمتنا لأنه يدعم أصلاً خادمًا على مستوى الإنتاج – على عكس معظم الأطر الأخرى.

لتثبيت CherryPy والبدء ، قم بتشغيل:

$ pip install CherryPy

فيما يلي السمات البارزة لـ CherryPy:

  • إطار Pythonic باستخدام Python الموجه للكائنات ؛ مناسب تمامًا للمبتدئين
  • دعم خادم HTTP جاهز للإنتاج ، Cheroot
  • أسهل في التعلم من أطر الويب الأخرى ، مثل Django
  • دعم بناء ونشر تطبيقات الويب البسيطة على الخدمات المصغرة

دافني

يعد Django أحد أشهر أطر عمل ويب Python. إذا قمت بتطوير تطبيقات باستخدام Django ، فمن المحتمل أنك استخدمت خادم الويب Daphne. Daphne هي واحدة من أولى تطبيقات خادم ASGI المستخدمة كمرجع لتطبيقات خادم ASGI.

يتوفر Daphne كحزمة PyPI التي يمكنك تثبيتها باستخدام pip.

$ pip install daphne

إليك برنامج تعليمي مفصل سيرشدك خلال إنشاء تطبيق Python كامل المكدس جاهز للإنتاج.

فيما يلي السمات البارزة لدافني:

  • اعتمدت على نطاق واسع في بيئات الإنتاج
  • مرجع لجميع تطبيقات خادم ASGI
  • دعم بروتوكولات HTTP و HTTP2 و WebSocket

بيثون تريو

يهدف مشروع Trio إلى توفير إمكانات إدخال / إخراج غير متزامنة بمستوى الإنتاج: دعم الإدخال / الإخراج المتوازي والتزامن. يحتوي هذا المشروع أيضًا على العديد من مكتبات الويب و HTTP Python.

يمكنك تثبيت أحدث إصدار من Trio (يونيو 2022) من PyPI.

$ pip install trio

فيما يلي قائمة بمكتبات Trio المفيدة لبرمجة الويب باستخدام Python:

  • Hypercorn: Hypercorn هو خادم ASGI يدعم HTTP
  • الكعك: Muffin هو إطار عمل ويب ASGI لبايثون
  • ستارتليت: Starlette هو إطار ASGI خفيف الوزن
  • trio-websocket: دعم خادم WebSocket والعميل
  • httpx: عميل HTTP لـ Python

ويب ملتوي

Twisted هو إطار عمل لتطبيقات Python. يتضمن هذا الإطار الذي يحركه الحدث وحدة لبرمجة الويب تسمى twisted.web.

يمكنك تثبيت Twisted والوحدات المرتبطة باستخدام النقطة:

$ pip install Twisted

فيما يلي السمات البارزة لـ Twisted:

  • ميزات صديقة للمطورين مثل اختبار الوحدة والتحقق من الرمز الثابت
  • يوفر twisted.web خادم WSGI ودعمًا لعملاء وخوادم HTTP

AIOHTTP

AIOHTTP هي مكتبة Python توفر إمكانيات من جانب العميل والخادم من خلال واجهات برمجة تطبيقات العميل والخادم.

  كيفية تبديل تظليل الصف أو العمود في أوراق Google

إليك مقطع فيديو مفيد يشرح إمكانيات البرمجة غير المتزامنة على جانب العميل لتسريع الطلبات إلى واجهات برمجة التطبيقات بشكل كبير.

فيما يلي السمات البارزة لـ AIOHTTP:

  • دعم وظائف كل من خادم HTTP والعميل
  • دعم التسجيل لتسهيل تصحيح الأخطاء ؛ يوفر التسجيل لعميل وخادم ومآخذ ويب والمزيد
  • دعم أصلي للاختبار من خلال البرنامج المساعد pytest للاختبار: pytest-aiohttp ، والذي يتوفر كحزمة PyPI

إعصار

Tornado هو إطار عمل ويب Python آخر يدعم الشبكات غير المتزامنة. في السنوات الأخيرة ، كان هناك العديد من الإصدارات المستقرة من Tornado – تم إصدار أحدث إصدار 6.2 في يوليو 2022. حاليًا ، يدعم Tornado Python 3.7 والإصدارات الأحدث.

مثل معظم الحزم في هذه القائمة ، يمكن أيضًا تثبيت Tornado باستخدام pip:

$ pip install tornado

فيما يلي السمات البارزة لـ Tornado:

  • دعم خادم HTTP tornado.httpserver والعميل
  • قابل للتطوير ويستخدم شبكة I / O غير معطلة
  • مناسب تمامًا للتطبيقات التي تتطلب اتصالاً لفترة زمنية أطول بكثير
  • أدوات مساعدة للتسجيل واختبار الوحدة والمزيد
  • تكامل سلس مع خدمات المصادقة

مينهيلد

Meinhold هو خادم WSGI لـ Python. يستخدم ويبني مكتبات موجودة لمعالجة الأحداث ومعالجة طلبات HTTP.

يمكنك تثبيت Meinhold باستخدام Pip:

$ pip install meinheld

بعض ميزات Meinhold:

  • يستخدم مكتبة http-parser للتعامل مع طلبات HTTP الواردة
  • يبني فوق مكتبة picoev لمعالجة الأحداث

استنتاج

آمل أن تكون قد وجدت هذه القائمة من خوادم ويب Python مفيدة. تأكد من تجربتها في مشاريعك المستقبلية. لقد قمنا بإدراج الميزات الرئيسية ؛ لفهم التبعيات وكيفية عملها تمامًا ، سيتعين عليك استخدامها في تطبيقاتك. 👩🏽‍💻

إذا كنت ترغب في رفع مستوى مهاراتك في Python ، ففكر في مراجعة مكتبة admingate.org لدروس Python التعليمية. ترميز سعيد!