الوحدة wsgiref.handlers()‎‎ في بايثون

من موسوعة حسوب
< Python‏ | wsgiref
مراجعة 13:28، 27 ديسمبر 2018 بواسطة Mohammed Taher (نقاش | مساهمات) (أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:الوحدة <code>wsgiref.handlers()‎‎</code> في بايثون}}</noinclude> تقدّم هذه الوحدة أصناف معالجة أس...')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)
اذهب إلى التنقل اذهب إلى البحث


تقدّم هذه الوحدة أصناف معالجة أساسية لاستخدام مخدّمات وبوابات WSGI. تعالج هذه الأصناف الجزء الأكبر من عملية التواصل مع تطبيق WSGI ما دامت في بيئة مشابهة لبيئة CGI وإلى جانب تدفّقات المدخلات والمخرجات والأخطاء.

الصنف wsgiref.handlers.CGIHandler

يستند هذا المعالج على sys.stdin و sys.stdout و sys.stderr و os.environ. يمكن الاستفادة من هذا الصنف عند الحاجة إلى تشغيل تطبيق WSGI كشيفرة CGI، حيث يمكن ببساطة تنفيذ التعبير CGIHandler().run(app)‎، إذ يمثل المعامل app كائن تطبيق WSGI الذي ترغب في تنفيذه.

يتفرّع هذا الصنف من الصنف BaseCGIHandler والذي يعين القيمة True للمتغير wsgi.run_once والقيمة False للمتغير wsgi.multithreadto، والقيمة True للمتغير wsgi.multiprocess ويستخدم الوحدتين sys و os دائمًا للحصول على تدفقات وبيئة CGI التي يحتاج إليها في عمله.

الصنف wsgiref.handlers.IISCGIHandler

هذا الصنف هو بديل خاص للصنف CGIHandler، ويستخدم لنشر التطبيقات على مخدّم الويب IIS الخاص بمايكروسوفت دون الحاجة إلى ضبط الخيار allowPathInfo في الإعدادات (في الإصدار 7 وما بعده من IIS) أو في قاعدة البيانات الداخلية metabase في الخيار allowPathInfoForScriptMappings (في الإصدر 6 وما قبله من IIS).

يعطي مخدّم IIS افتراضيًا متغير PATH_INFO يقوم بمضاعفة المتغير SCRIPT_NAME في الواجهة، الأمر الذي يتسبب في حدوث مشاكل بالنسبة لتطبيقات WSGI التي ترغب في استخدام التوجيه rounting؛ لذا يتخلص هذا المعالج من أي مسارات متكرّرة.

يمكن ضبط مخدّم IIS لتمرير قيمة صحيحة للمتغير PATH_INFO، ولكنّ ذلك يؤدي إلى حدوث مشكلة أخرى حيث تصبح قيمة PATH_TRANSLATED خاطئة. ولحسن الحظ فإنّ هذا المتغير نادر الاستخدام وليس مضمونًا في WSGI. ولكن يجب الانتباه إلى أنّ هذه الإعدادات يمكن إجراؤها على مستوى المضيف الافتراضي vhost في الإصدارات السابقة للإصدار 7 من IIS، وهو أمر قد يؤثّر على بقية روابط الشيفرات، والتي تتوقف عن العمل عند تعرضّها لمشكلة المتغير PATH_TRANSLATED؛ ولهذا السبب لا يستخدم هذا الحل مع الإصدارات السابقة للإصدار 7 من IIS. (بل حتى الإصدار 7 من IIS يستخدم هذا الحل بصورة نادرة لعدم وجود واجهة استخدام له).

لا يمكن لشيفرة CGI أن تعرف ما إذا كان الخيار مستخدمًا أم لا؛ لذا هناك صنف معالجة خاص لهذا الأمر. يستخدم هذا الصنف بنفس طريقة استخدام الصنف CGIHandler أي باستخدام التعبير IISCGIHandler().run(app)‎ ويمثل المعامل app كائن تطبيق WSGI الذي ترغب في تنفيذه.

ملاحظة: هذا الصنف جديد في الإصدار 3.2 من بايثون.


مصادر