الفرق بين المراجعتين لصفحة: «Python/wsgiref/validate/validator»

من موسوعة حسوب
< Python‏ | wsgiref‏ | validate
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:الدالة <code>cgitb.enable()‎‎</code> في بايثون}}</noinclude> تغلّف هذه الدالة التطبيق المعطى وت...'
 
طلا ملخص تعديل
 
(1 مراجعات متوسطة بواسطة نفس المستخدم غير معروضة)
سطر 1: سطر 1:
<noinclude>{{DISPLAYTITLE:الدالة <code>cgitb.enable()‎‎</code> في بايثون}}</noinclude>
<noinclude>{{DISPLAYTITLE:الدالة <code>validate.validator()‎‎</code> في بايثون}}</noinclude>
تغلّف هذه الدالة التطبيق المعطى وتعيد كائن تطبيق WSGI جديد، وسيوجّه التطبيق المعاد جميع الطلبات إلى التطبيق الأصلي، وسيتحقّق من أنّ كلًّا من التطبيق والمخدّم الذي يستدعيه متوافقان مع معايير WSGI وللبروتوكول RFC 2616.
تغلّف هذه الدالة التطبيق المعطى وتعيد كائن تطبيق WSGI جديد، وسيوجّه التطبيق المعاد جميع الطلبات إلى التطبيق الأصلي، وسيتحقّق من أنّ كلًّا من التطبيق والمخدّم الذي يستدعيه متوافقان مع معايير WSGI وللبروتوكول RFC 2616.


يؤدي وجود أيّ حالة من حالات عدم التوافق إلى إطلاق الخطأ AssertionError، ولكن يجب الانتباه إلى أنّ طريقة التعامل مع هذه الأخطاء تعتمد على المخدّم، فعلى سبيل المثال يعطي المخدّم wsgiref.simple_server و المخدّمات المستندة على wsgiref.handlers (والتي لا تعيد تعريف توابع التعامل مع الأخطاء للقيام بأمور أخرى) رسالة بسيطة تشير إلى حدوث خطأ ما، ثم تلقي الخطأ في sys.stderr أو أي تدفق آخر للأخطاء.
يؤدي وجود أيّ حالة من حالات عدم التوافق إلى إطلاق الخطأ <code>AssertionError</code>، ولكن يجب الانتباه إلى أنّ طريقة التعامل مع هذه الأخطاء تعتمد على المخدّم، فعلى سبيل المثال يعطي المخدّم <code>[[Python/wsgiref/simple server|wsgiref.simple_server]]</code> و المخدّمات المستندة على أصناف الوحدة <code>[[Python/wsgiref/handlers|wsgiref.handlers]]</code> (والتي لا تعيد تعريف توابع التعامل مع الأخطاء للقيام بأمور أخرى) رسالة بسيطة تشير إلى حدوث خطأ ما، ثم تلقي الخطأ في <code>sys.stderr</code> أو أي تدفق آخر للأخطاء.


يمكن لهذه الدالة أن تنتج مخرجات باستخدام وحدة warnings أيضًا، وذلك للإشارة إلى أي سلوك قد يكون موضع شكّ فيما إذا كان مسموحًا به في معايير PEP 3333 أو لا.
يمكن لهذه الدالة أن تنتج مخرجات باستخدام وحدة <code>[[Python/warnings|warnings]]</code> أيضًا، وذلك للإشارة إلى أي سلوك قد يكون موضع شكّ فيما إذا كان مسموحًا به في معايير [https://www.python.org/dev/peps/pep-3333 PEP 3333] أو لا.


تكتب مثل هذه التحذيرات في sys.stderr (وليس في wsgi.errors إلا إذا صادف كونهما الكائن نفسه) ما لم تُخفَ باستخدام خيارات بايثون في سطر الأوامر أو باستخدام الواجهة البرمجية لوحدة warnings.
تكتب مثل هذه التحذيرات في <code>sys.stderr</code> (وليس في <code>wsgi.errors</code> إلا إذا صادف كونهما الكائن نفسه) ما لم تُخفَ باستخدام خيارات بايثون في سطر الأوامر أو باستخدام الواجهة البرمجية لوحدة <code>[[Python/warnings|warnings]]</code>.


== البنية العامة ==
== البنية العامة ==
سطر 16: سطر 16:
== أمثلة ==
== أمثلة ==


يبين المثال التالي طريقة عمل التابع:
يبين المثال التالي طريقة استخدام الدالة:


<syntaxhighlight lang="python3">
<syntaxhighlight lang="python3">
سطر 45: سطر 45:


== مصادر ==
== مصادر ==
* [https://docs.python.org/3/library/wsgiref.html#wsgiref.util.guess_scheme قسم WSGI environment utilities في صفحة WSGI Utilities and Reference Implementation في توثيق بايثون الرسمي.]
* [https://docs.python.org/3/library/wsgiref.html#wsgiref.validate.validator قسم WSGI environment utilities في صفحة WSGI Utilities and Reference Implementation في توثيق بايثون الرسمي.]


[[تصنيف:Python]]
[[تصنيف:Python]]
[[تصنيف:Python Modules]]
[[تصنيف:Python Modules]]

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

تغلّف هذه الدالة التطبيق المعطى وتعيد كائن تطبيق WSGI جديد، وسيوجّه التطبيق المعاد جميع الطلبات إلى التطبيق الأصلي، وسيتحقّق من أنّ كلًّا من التطبيق والمخدّم الذي يستدعيه متوافقان مع معايير WSGI وللبروتوكول RFC 2616.

يؤدي وجود أيّ حالة من حالات عدم التوافق إلى إطلاق الخطأ AssertionError، ولكن يجب الانتباه إلى أنّ طريقة التعامل مع هذه الأخطاء تعتمد على المخدّم، فعلى سبيل المثال يعطي المخدّم wsgiref.simple_server و المخدّمات المستندة على أصناف الوحدة wsgiref.handlers (والتي لا تعيد تعريف توابع التعامل مع الأخطاء للقيام بأمور أخرى) رسالة بسيطة تشير إلى حدوث خطأ ما، ثم تلقي الخطأ في sys.stderr أو أي تدفق آخر للأخطاء.

يمكن لهذه الدالة أن تنتج مخرجات باستخدام وحدة warnings أيضًا، وذلك للإشارة إلى أي سلوك قد يكون موضع شكّ فيما إذا كان مسموحًا به في معايير PEP 3333 أو لا.

تكتب مثل هذه التحذيرات في sys.stderr (وليس في wsgi.errors إلا إذا صادف كونهما الكائن نفسه) ما لم تُخفَ باستخدام خيارات بايثون في سطر الأوامر أو باستخدام الواجهة البرمجية لوحدة warnings.

البنية العامة

wsgiref.validate.validator(application)

أمثلة

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

from wsgiref.validate import validator
from wsgiref.simple_server import make_server

# الكائن القابل للاستدعاء في هذا المثال غير مطابق للمعايير
# لذا فإنّ عملية التحقّق ستطلق خطأ
def simple_app(environ, start_response):
    status = '200 OK'  # HTTP Status
    headers = [('Content-type', 'text/plain')]  # HTTP Headers
    start_response(status, headers)


	# عملية التحقق ستتوقف هنا لأنّ من الواجب أن نعيد قائمة
    # وستخبرنا دالة التحقق بذلك.
    return b"Hello World"

# هذا هو التطبيق المغلّف بدالة التحقق

validator_app = validator(simple_app)

with make_server('', 8000, validator_app) as httpd:
    print("Listening on port 8000....")
    httpd.serve_forever()

مصادر