Кіріспе

Веб-серверлерге Python тілінде жазылған веб-қосымшаларға сұрауларды жіберуге арналған шақыру конвенциясы. Веб-сервер шлюзінің интерфейсі (WSGI, «виски» немесе «WIZghee» деп айтылады) – Python бағдарламалау тілінде жазылған веб-қосымшаларға немесе фреймворктерге сұрауларды жіберу үшін веб-серверлерге арналған қарапайым шақыру конвенциясы. WSGI-нің қазіргі нұсқасы, 1.0.1 нұсқасы, Python Enhancement Proposal (PEP) 3333-та сипатталған. WSGI алғаш рет 2003 жылы PEP 333 ретінде сипатталған. PEP 3333 2010 жылы жарияланды және Python 3 үшін спецификацияны жаңартады.

Өмірбаян

2003 жылы Python веб-фреймворктері әдетте тек CGI, FastCGI, mod_python немесе белгілі бір веб-сервердің басқа бейімделген API-іне сәйкес жазылды. PEP 333 цитаты бойынша:

Python қазіргі уақытта Zope, Quixote, Webware, SkunkWeb, PSO және Twisted Web сияқты көптеген веб-қосымшалар фреймворктерін ұсынады. Мұндай кең таңдау жаңа Python пайдаланушылары үшін қиындық тудыруы мүмкін, себебі әдетте веб-фреймворк таңдауы қолданылатын веб-серверлерді шектейді, және керісінше. Ал Java-да да веб-қосымшалардың осындай көптеген фреймворктері болғанымен, Java-ның "servlet" API кез келген Java веб-қосымшалар фреймворкімен жазылған бағдарламаларды servlet API-ін қолдайтын кез келген веб-серверде іске қосуға мүмкіндік береді. Сондықтан WSGI веб-серверлер мен веб-қосымшалар немесе фреймворктер арасындағы интерфейс ретінде құрылды, ол портативті веб-қосымшаларды әзірлеу үшін ортақ платформаны дамытуға бағытталған. Мидлверлік компонент мынадай функцияларды орындай алады: екі параметрді қабылдайтын атаулы қосымша – environ және start_response. Environ – бұл CGI ортасының айнымалыларын, сондай-ақ басқа сұрау параметрлері мен метадеректерді жақсы анықталған кілттермен қамтитын сөздік. start_response өзі шақырылатын функция, ол екі позициялық параметрді қабылдайды: статус және жауап тақырыптары. 2-жол start_response функциясын шақырып, HTTP статусын "200 OK" және жауап тақырыбын "Content Type" деп белгілейді. 3-жол функцияны генераторға айналдырады. Жауаптың мәтіні байттар тізбегінің итерациялық түрі ретінде қайтарылады.