تعلم WSGI ، واسمح لـ Python بعرق الأشياء الصغيرة

إفشاء: يساعدك دعمك في الحفاظ على تشغيل الموقع! نحصل على رسوم إحالة لبعض الخدمات التي نوصي بها في هذه الصفحة.


في الماضي ، كان تطوير تطبيقات الويب في Python يمثل مشكلة ، لأنه كان على المطورين أن يهتموا بشكل خاص ويؤكدوا أن تطبيق الويب الخاص بهم سيعمل بسلاسة على خوادم الويب المختلفة وأطر الويب المختلفة لـ Python. أدى اختيار إطار ويب Python محدد أثناء تطوير التطبيق إلى تقييد اختيار خوادم الويب المتوافقة ، القادرة على تشغيل التطبيق النهائي.

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

بالطبع ، لغة بايثون ليست لغة البرمجة الوحيدة مع مواصفات واجهة قياسية. تستخدم العديد من لغات البرمجة الحديثة نفس النهج ، لذلك على سبيل المثال ، تستخدم Ruby واجهة خادم Rack الخاصة بها ، وتعتمد JavaScript على واجهة بوابة JSGI الخاصة بها ، بينما تستخدم Perl PSGI.

نبذة تاريخية

تم تقديم مواصفات WSGI في الأصل في اقتراح تحسين Python 333 (PEP 333) ، الذي كتبه Phillip J Eby ونشره في ديسمبر 2003. وضعت مسودة مواصفات WSGI الأولية هذه المبادئ والأهداف الأساسية لـ WSGI – كان يجب أن تكون سهلة التنفيذ وبسيطة وعالمية ، ويجب أن تسهل التوصيل البيني السهل للخوادم والأطر القائمة.

تم اعتماد WSGI بسرعة من قبل خادم Python ومؤلفي إطار العمل والمطورين ، وأصبح المعيار الفعلي لتطوير تطبيقات الويب Python. أحدث إصدار من مواصفات WSGI هو V1.0.1 ، تم نشره في PEP 3333 في 26 سبتمبر 2010.

نظرة عامة على مواصفات WSGI

تحدد مواصفات WSGI ثلاثة أدوار محددة: جانب الخادم ، وجانب التطبيق ، ومكون البرامج الوسيطة ، التي تطبق كلاً من جانبي الخادم والتطبيق للواجهة.

جانب التطبيق

جانب التطبيق في WSGI هو كائن بسيط يقبل حجتين ويمكن استدعاؤه من التعليمات البرمجية. يوضح هذا المثال تطبيق WSGI البسيط الذي يعرض “Hello world!” الثابت. الصفحة:

def simple_app (البيئة ، start_response):
الحالة = “200 موافق”
response_headers = [(“نوع المحتوى” ، “نص / عادي”)]
start_response (الحالة ، رؤوس_استجابات)
ارجع [“Hello world! n ‘]

يمكن استدعاء الكائنات الجانبية للتطبيق عدة مرات ، حيث تقوم جميع الخوادم بإجراء مثل هذه الطلبات المتكررة.

جانب الخادم

يستقبل جانب الخادم في WSGI الطلبات من عميل HTTP ببساطة ، ويستدعي التطبيق مرة واحدة لكل طلب ، ويرسل الاستجابة التي أرجعها التطبيق إلى العميل.

مكون الوسيطة

تستخدم مكونات الوسيطة المحددة في مواصفات WSGI جانبي الواجهة – جانب التطبيق ، وكذلك جانب الخادم. وظائف الوسيطة شفافة لكل من جانب الخادم وجانب التطبيق.

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

يوضح هذا المثال مكونًا وسيطًا بسيطًا يعلو كل شيء يتلقاه:

فئة Upperware:
def __init __ (self ، app):
self.wrapped_app = التطبيق

def __call __ (self ، environ ، start_response):
للبيانات في self.wrapped_app (environ ، start_response):
إرجاع data.upper ()

باستخدام WSGI

تم قبول WSGI الآن كمعيار لتطوير تطبيقات الويب Python. يحتوي الإصدار 2.5 من Python والإصدارات اللاحقة على دعم WSGI مضمن. في إصدارات Python 2.4 والإصدارات الأقدم ، يمكن تثبيت دعم WSGI بشكل منفصل. يتوفر إصدار محدث من مواصفات WSGI المعلن عنها في PEP 3333 لـ Python 3.

إذا كنت تقوم بتطوير تطبيقات ويب في Python ، فما عليك سوى استخدام معيار الصناعة المثبت ، مثل أطر عمل الويب Django أو Flask أو Bottle Python أو أي إطار عمل Python حالي آخر. ليس من الضروري معرفة الكثير عن مواصفات WSGI لبناء التطبيقات. ما عليك سوى استخدام أي إطار عمل تطبيق ويب للجيل الحالي ، ويجب أن تكون واضحًا ، حيث أنهم جميعًا يدعمون WSGI.

من ناحية أخرى ، إذا كنت تقوم بتطوير إطار تطبيق ويب جديد بنفسك ، فعليك بالتأكيد إلقاء نظرة جيدة على مواصفات WSGI والتحقق من بعض مصادر التعلم لـ WSGI.

موارد WSGI

إذا كنت بحاجة إلى معرفة المزيد عن WSGI ، نقترح إلقاء نظرة على بعض الموارد التالية عبر الإنترنت:

  • من الواضح أن موقع مجتمع WSGI هو أول مكان للزيارة. يمكنك العثور على العديد من الموارد المفيدة ، وهناك أيضًا قسم تعرف على WSGI لطيف. يسرد هذا الموقع أيضًا الأطر والخوادم التي تدعم WSGI.
  • يمكنك أيضًا قراءة اقتراح تحسين Python الكامل 333 ومقترح تحسين Python 3333 للحصول على مزيد من المعلومات.
  • يحتوي موقع Pylons Web Development Framework للتوثيق عبر الإنترنت على قسم لطيف للغاية ومفصل عن WSGI.
  • سيوضح البرنامج التعليمي WSGI من Codepoint مواصفات WSGI في العمل باستخدام بعض الأمثلة البسيطة.

كتب WSGI

من الصعب الحصول على الكتب التي تغطي WSGI على وجه التحديد ، وستجد عادةً فصولًا تتعامل مع WSGI في العديد من كتب برمجة تطبيقات الويب Python ، مثل هذا:

  • أسس برمجة شبكة Python: الدليل الشامل لبناء تطبيقات الشبكة مع Python بواسطة Goerzen و Bower و Rhodes: يغطي الفصل الخاص ببرمجة تطبيقات الويب معيار WSGI للتشغيل البيني للمكونات ، بالإضافة إلى أطر الويب الحديثة مثل Django.

استنتاج

WSGI هي مواصفات بيثون حيوية ، ولكن في الواقع ، لا يحتاج معظم مطوري بايثون إلى القلق حيال ذلك. طالما أنهم يستخدمون إطار عمل رئيسي ، فسوف يستفيدون من WSGI دون التفكير في الأمر مرة أخرى. بمعنى آخر ، لا يحتاج معظم المطورين إلى معرفة حميمة بـ WSGI ، لأن المواصفات قد تم تنفيذها في جميع أطر عمل Python الرئيسية.

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

من الواضح أن هذا مكانة ضيقة (جدًا) ، لكن هذا لا يعني أن تطوير WSGI قد توقف. هذا يعني فقط أن المجتمع ليس كبيرًا ، ولكنه موجود.

مزيد من القراءة والموارد

لدينا المزيد من الأدلة والبرامج التعليمية والرسوم البيانية ذات الصلة بالتشفير والتطوير:

  • مقدمة Python والموارد والأسئلة الشائعة: إذا كنت جديدًا على Python ، فستساعدك هذه المقدمة على المضي قدمًا.
  • MPI – مقدمة وتاريخ وموارد: تسمح واجهة تمرير الرسائل (MPI) للبرامج وأنظمة الكمبيوتر الأخرى بإرسال الرسائل إلى بعضها البعض.
  • مقدمة وموارد برمجة لينكس: هذا الغوص العميق في برمجة لينكس ينزل إلى النواة حيث كل العمل.

ما رمز يجب أن تتعلمه?

هل تشعر بالارتباك حول لغة البرمجة التي يجب أن تتعلم البرمجة بها؟ تحقق من مخطط المعلومات الخاص بنا ، ما هو الرمز الذي يجب أن تتعلمه؟ إنه لا يناقش الجوانب المختلفة للغات فحسب ، بل يجيب على أسئلة مهمة مثل ، “كم من المال سأجني برمجة جافا للعيش؟”

ما هو الرمز الذي يجب أن تتعلمه؟
ما رمز يجب أن تتعلمه?

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map