الفرق بين المراجعتين ل"Python/wsgiref/handlers"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
 
(3 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:الوحدة <code>wsgiref.handlers()‎‎</code> في بايثون}}</noinclude>
+
<noinclude>{{DISPLAYTITLE:الوحدة <code>wsgiref.handlers‎‎</code> في بايثون}}</noinclude>
  
 
تقدّم هذه الوحدة أصناف معالجة أساسية لاستخدام مخدّمات وبوابات WSGI. تعالج هذه الأصناف الجزء الأكبر من عملية التواصل مع تطبيق WSGI ما دامت في بيئة مشابهة لبيئة CGI وإلى جانب تدفّقات المدخلات والمخرجات والأخطاء.
 
تقدّم هذه الوحدة أصناف معالجة أساسية لاستخدام مخدّمات وبوابات WSGI. تعالج هذه الأصناف الجزء الأكبر من عملية التواصل مع تطبيق WSGI ما دامت في بيئة مشابهة لبيئة CGI وإلى جانب تدفّقات المدخلات والمخرجات والأخطاء.
سطر 10: سطر 10:
  
 
هذا الصنف هو بديل خاص للصنف <code>CGIHandler</code>، ويستخدم لنشر التطبيقات على مخدّم الويب IIS الخاص بمايكروسوفت دون الحاجة إلى ضبط الخيار <code>allowPathInfo</code> في الإعدادات (في الإصدار 7 وما بعده من IIS) أو في قاعدة البيانات الداخلية metabase في الخيار <code>allowPathInfoForScriptMappings</code> (في الإصدر 6 وما قبله من IIS).
 
هذا الصنف هو بديل خاص للصنف <code>CGIHandler</code>، ويستخدم لنشر التطبيقات على مخدّم الويب IIS الخاص بمايكروسوفت دون الحاجة إلى ضبط الخيار <code>allowPathInfo</code> في الإعدادات (في الإصدار 7 وما بعده من IIS) أو في قاعدة البيانات الداخلية metabase في الخيار <code>allowPathInfoForScriptMappings</code> (في الإصدر 6 وما قبله من IIS).
 
يعطي مخدّم IIS افتراضيًا متغير <code>PATH_INFO</code> يقوم بمضاعفة المتغير <code>SCRIPT_NAME</code> في الواجهة، الأمر الذي يتسبب في حدوث مشاكل بالنسبة لتطبيقات WSGI التي ترغب في استخدام التوجيه routing؛ لذا يتخلص هذا المعالج من أي مسارات متكرّرة.
 
 
يمكن ضبط مخدّم IIS لتمرير قيمة صحيحة للمتغير <code>PATH_INFO</code>، ولكنّ ذلك يؤدي إلى حدوث مشكلة أخرى حيث تصبح قيمة <code>PATH_TRANSLATED</code> خاطئة. ولحسن الحظ فإنّ هذا المتغير نادر الاستخدام وليس مضمونًا في WSGI. ولكن يجب الانتباه إلى أنّ هذه الإعدادات يمكن إجراؤها على مستوى المضيف الافتراضي vhost في الإصدارات السابقة للإصدار 7 من IIS، وهو أمر قد يؤثّر على بقية روابط الشيفرات، والتي تتوقف عن العمل عند تعرضّها لمشكلة المتغير <code>PATH_TRANSLATED</code>؛ ولهذا السبب لا يستخدم هذا الحل مع الإصدارات السابقة للإصدار 7 من IIS. (بل حتى الإصدار 7 من IIS يستخدم هذا الحل بصورة نادرة لعدم وجود واجهة استخدام له).
 
 
لا يمكن لشيفرة CGI أن تعرف ما إذا كان الخيار مستخدمًا أم لا؛ لذا هناك صنف معالجة خاص لهذا الأمر. يستخدم هذا الصنف بنفس طريقة استخدام الصنف <code>CGIHandler</code> أي باستخدام التعبير <code>IISCGIHandler().run(app)‎</code> ويمثل المعامل <code>app</code> كائن تطبيق WSGI الذي ترغب في تنفيذه.
 
 
ملاحظة: هذا الصنف جديد في الإصدار 3.2 من بايثون.
 
  
 
== الصنف <code>[[Python/BaseCGIHandler|wsgiref.handlers.BaseCGIHandler]]</code> ==
 
== الصنف <code>[[Python/BaseCGIHandler|wsgiref.handlers.BaseCGIHandler]]</code> ==
سطر 33: سطر 25:
 
يجب إعطاء قيمة صحيحة لهذه الخاصية إن كان التابعان <code>‎_write()</code>‎ و <code>‎_flush()</code>‎ في معالج الطلبات يُستخدمان للتواصل مع العميل مباشرة عوضًا عن استخدام بروتكول بوابة شبيهة بـ CGI والتي تتطلب أن تكون حالة HTTP بالصيغة الخاصة: <code>Status:header</code>.
 
يجب إعطاء قيمة صحيحة لهذه الخاصية إن كان التابعان <code>‎_write()</code>‎ و <code>‎_flush()</code>‎ في معالج الطلبات يُستخدمان للتواصل مع العميل مباشرة عوضًا عن استخدام بروتكول بوابة شبيهة بـ CGI والتي تتطلب أن تكون حالة HTTP بالصيغة الخاصة: <code>Status:header</code>.
  
تأخذ الخاصية قيمة صحيحة عند استخدام الصنف <code>BaseHandler</code>، وقيمة خاطئة عند استخدام الصنفين <code>BaseCGIHandler</code> و <code>CGIHandler</code>.
+
تأخذ الخاصية قيمة صحيحة عند استخدام الصنف <code>[[Python/BaseHandler|BaseHandler]]</code>، وقيمة خاطئة عند استخدام الصنفين <code>[[Python/BaseCGIHandler|BaseCGIHandler]]</code> و <code>[[Python/CGIHandler|CGIHandler]]</code>.
  
 
=== الخاصية <code>http_version</code> ===
 
=== الخاصية <code>http_version</code> ===
 
إن كانت قيمة الخاصية <code>origin_server</code> صحيحة، تُستخدم هذه الخاصية النصية لتعيين إصدار HTTP للاستجابة المُرسلة إلى العميل. تأخذ هذه الخاصية القيمة الافتراضية <code>"1.0"</code>.
 
إن كانت قيمة الخاصية <code>origin_server</code> صحيحة، تُستخدم هذه الخاصية النصية لتعيين إصدار HTTP للاستجابة المُرسلة إلى العميل. تأخذ هذه الخاصية القيمة الافتراضية <code>"1.0"</code>.
  
=== الدالة <code>wsgiref.handlers.read_environ()‎</code> ===
+
=== الدالة <code>[[Python/wsgiref/handlers/read environ|wsgiref.handlers.read_environ()]]‎</code> ===
 
تحول الدالة متغيرات CGI من <code>os.environ</code> إلى سلاسل نصية (بايتات بترميز unicode) ضمن المعيار [https://www.python.org/dev/peps/pep-3333 PEP 3333]، وتعيد قاموسًا جديدًا.  
 
تحول الدالة متغيرات CGI من <code>os.environ</code> إلى سلاسل نصية (بايتات بترميز unicode) ضمن المعيار [https://www.python.org/dev/peps/pep-3333 PEP 3333]، وتعيد قاموسًا جديدًا.  
  

المراجعة الحالية بتاريخ 16:32، 27 ديسمبر 2018


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

الصنف wsgiref.handlers.CGIHandler

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

الصنف wsgiref.handlers.IISCGIHandler

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

الصنف wsgiref.handlers.BaseCGIHandler

هذا الصنف مشابه للصنف CGIHandler، ولكن عوضًا عن استخدام الوحدتين sys و os، فإنّ بيئة CGI و تدفقات المدخلات والمخرجات تحدّد من قبل المستخدم.

الصنف wsgiref.handlers.SimpleHandler

هذا الصنف مشابه للصنف BaseCGIHandler، ولكنّه مصمّم للاستخدام مع المخدمّات من نوع HTTP.

الصنف wsgiref.handlers.BaseHandler

هذا الصنف هو صنف أساسي مجرّد يستخدم لتشغيل تطبيقات WSGI. 

خصائص ودوال متنوعة

الخاصية origin_server

يجب إعطاء قيمة صحيحة لهذه الخاصية إن كان التابعان ‎_write()‎ و ‎_flush()‎ في معالج الطلبات يُستخدمان للتواصل مع العميل مباشرة عوضًا عن استخدام بروتكول بوابة شبيهة بـ CGI والتي تتطلب أن تكون حالة HTTP بالصيغة الخاصة: Status:header.

تأخذ الخاصية قيمة صحيحة عند استخدام الصنف BaseHandler، وقيمة خاطئة عند استخدام الصنفين BaseCGIHandler و CGIHandler.

الخاصية http_version

إن كانت قيمة الخاصية origin_server صحيحة، تُستخدم هذه الخاصية النصية لتعيين إصدار HTTP للاستجابة المُرسلة إلى العميل. تأخذ هذه الخاصية القيمة الافتراضية "1.0".

الدالة wsgiref.handlers.read_environ()

تحول الدالة متغيرات CGI من os.environ إلى سلاسل نصية (بايتات بترميز unicode) ضمن المعيار PEP 3333، وتعيد قاموسًا جديدًا.

مصادر