واسط دروازه کارساز وب کیست؟ توضیح بده.
رابط دروازه وب سرور (WSGI ، ویسکی تلفظ می شود یا wiz - ghee ) یک کنوانسیون تماس ساده برای سرورهای وب برای ارسال درخواست ها به برنامه های وب یا فریم وورک های نوشته شده در زبان برنامه نویسی پایتون است. نسخه فعلی WSGI ، نسخه 1.0.1 ، در Python Enhancement Proposal (PEP) 3333 مشخص شده است. WSGI ابتدا در PEP - 333 در سال 2003 منتشر شد. [5] PEP - 3333 ، که در سال 2010 منتشر شد ، مشخصات را برای Python 3 به روز می کند.پیش‌زمینه.در سال 2003 ، چارچوب های وب پایتون معمولاً فقط در برابر CGI ، FastCGI ، mod _ python یا برخی دیگر از API های سفارشی وب سرور خاص نوشته می شدند. [6] به نقل از PEP 333:در حال حاضر پایتون از طیف گسترده ای از چارچوب های برنامه وب ، مانند Zope ، Quixote ، Webware ، SkunkWeb ، PSO و Twisted Web - دارای چند مورد است. این تنوع گسترده در انتخاب می تواند برای کاربران جدید پایتون مشکل ساز شود ، زیرا به طور کلی ، انتخاب فریموورک وب باعث محدود شدن انتخاب وب سرورهای قابل استفاده می شود و بالعکس ... در مقابل ، اگرچه جاوا به همان تعداد چارچوب برنامه های وب دارد ولی API "servlet" جاوا این امکان را برای برنامه های نوشته شده با هر فریموورک وب جاوا فراهم می کند تا در هر وب سروری که از servlet API پشتیبانی می کند ، اجرا شوند.بنابراین WSGI به عنوان یک پیاده سازی ایجاد شد -تا رابط بین وب سرورها و برنامه های وب باا چارچوب ها برای ایجاد زمینه های مشترک برای توسعه برنامه های وب پرتابل. مرور مشخصات.WSGI دو سمت دارد:سمت سرور / دروازه. این برنامه اغلب در حال اجرای کامل نرم افزار وب سرور مانند Apache یا Nginx است یا یک سرور کاربردی سبک است که می تواند با یک سرور وب مانند flup ارتباط برقرار کند.سمت برنامه / چارچوب. این سمت ازحنس پایتون است که می تواند توسط برنامه یا فریموورک پایتون تهیه شود.بین سرور و برنامه ، ممکن است یک یا چند اجزای میان افزار ی وجود داشته باشد که هر دو طرف API را اجرا می کنند ، معمولاً در زبان پایتون.WSGI مشخص نمی کند که چگونه مفسر Python باید راه اندازی شود و همچنین نحوه بارگیری یا پیکربندی شی application برنامه مشخص نیست و چارچوب ها و سرورهای مختلف به روش های مختلف به این هدف دست می یابند.میان افزار WSGI.یک جز میان افزار WSGI یک فراخوان پایتون است که خود یک برنامه WSGI است ، اما ممکن است با تفویض اختیار به سایر برنامه های WSGI درخواست ها را کنترل کند. این برنامه ها می توانند خود مؤلفه های میان افزار WSGI باشند.یک جز میان افزار می تواند چنین عملکردهایی را انجام دهد: مثال.اپلیکیشن نمونه.برنامه "Hello, World" سازگار با WSGI که در پایتون نوشته شده است:def application(environ, start_response): start_response('200 OK', [('Content-Type', 'text/plain')]) yield b'Hello, World!\n'جایی که :نمونه ای از صدا زدن یک اپلیکیشن.یک مثال کامل از سرور شبکه WSGI خارج از حوصله این مقاله است. در زیر طرحی از چگونگی فراخوانی برنامه WSGI و بازیابی خط وضعیت HTTP ، هدرهای پاسخ و بدنه پاسخ آن به عنوان اشیا پایتون آورده شده است. جزئیات مربوط به نحوه ساخت دیکشنری environ حذف شده است.from io import BytesIOdef call_application(app, environ): status = None headers = None body = BytesIO() def start_response(rstatus, rheaders): nonlocal status, headers status, headers = rstatus, rheaders app_iter = app(environ, start_response) try: for data in app_iter: assert status is not None and headers is not None, \ "start_response() was not called" body.write(data) finally: if hasattr(app_iter, 'close'): app_iter.close() return status, headers, body.getvalue()environ = {...} # "environ" dictstatus, headers, body = call_application(app, environ)برنامه ها و فریموورک های سازگار با WSGI.چندین فریموورک وب از WSGI پشتیبانی می کنند:پوشه های فعلی برای FastCGI ، CGI ، SCGI ، AJP (با استفاده از flup) ، twisted.web ، Apache (با استفاده از mod _ wsgi یا mod _ python) ، Nginx (با استفاده از ngx _ http _ uwsgi _ module) و Microsoft IIS (با استفاده از WFastCGI ، [27] isapi - wsgi ، [28] PyISAPIe ، [29] یا درگاه ASP) در دسترس هستند.