Heim > Artikel > Backend-Entwicklung > Was ist das Prinzip der Python-WSGI-Anwendung?
Die python
-Umgebung, auf der dieser Artikel basiert, ist: python
环境为:
WSGI
也称之为web
服务器通用网关接口,全称是web server gateway interface
。它定义了在python
中web
服务器与web
应用程序之间应该如何通信并且处理http
请求和响应的一个标准,注意,它只是一个协议,或者说是规范、标准,你也可以不按这个标准来,就像我们上一篇文章所写的web
服务器那样。
WSGI
也分为应用程序 和 服务器网关, 其中我们熟知的Flask
就是属于应用程序,uWSGI
、wsgiref
属于服务器网关。
个人感觉,WSGI
避免了造轮子,事情让更擅长的人去做,写服务器的,那就写符合WSGI
规范的服务器就好,如果是写应用端的,就写符合WSGI
规范应用就好。不用在重复的写轮子。
除此之外,WSGI
还能与传统web
服务器对接,例如: nginx
、apache
等进行交互。
WSGI
中规定了其应用程序必须是一个可被调用的对象,通常来说,该对象是一个函数或者是一个类。 该对象必须接收2个参数,分别是environ
字典 和 start_response
函数,并且在对象结束前,应该调用start_response
函数。而函数应该传参status
和headers
,其中status
应该定义响应状态码以及短语,headers
应该定义响应头。
如果用代码来阐述的话,应该是这样来写的:
def application(environ, start_response): status = '200 OK' headers = [('Content-type', 'text/plain')] start_response(status, headers) return [b'Hello, world!']
其中,application
是一个可迭代的对象,接受了2个参数,一个是environ
,其类型是字典,还是一个是start_response
,其类型是函数,在application
结束前,应该调用start_response
函数,并且传入status
和headers
值。
我们昨天写的代码,将返回一个Hello, Destined Person.
,我们来看下,如果我们使用WSGI
标准来写业务层,我们应该如何定义,并且如何调用WSGI
服务器。
上述,我们引入了一个符合WSGI
的服务器: wsgiref.simple_server
,我们仅需按照WSGI
的标准来编写业务层,也就是上述的application
即可。我们在定义状态码的时候,估计将其设置为299 OK
,在设置请求头的时候,设置了一个Server
为pdudo_web_sites
。
我们使用curl
请求一下服务器。
发现,哦,只要按照WSGI
WSGI
ist auch Der vollständige Name der universellen Gateway-Schnittstelle des Web
-Servers lautet Web-Server-Gateway-Schnittstelle
. Es definiert, wie der Web
-Server und die Web
-Anwendung in Python
kommunizieren und http
-Anfragen verarbeiten sollen, und einen Standard für Beachten Sie, dass es sich nur um ein Protokoll oder eine Spezifikation oder einen Standard handelt. Sie müssen diesem Standard nicht folgen, genau wie beim web
-Server, den wir im vorherigen Artikel geschrieben haben. #🎜🎜##🎜🎜#WSGI
ist auch in Anwendungen und Server-Gateways unterteilt. Darunter gehört der bekannte Flask
zu Anwendungen und uWSGI , <code>wsgiref
gehört zum Server-Gateway. #🎜🎜##🎜🎜#Persönlich vermeidet WSGI
, das Rad neu zu erfinden und ermöglicht es Menschen, die besser darin sind, es zu tun. Wenn Sie einen Server schreiben, schreiben Sie ihn in Übereinstimmung mit dem WSGI
-Spezifikation. Wenn Sie eine Anwendung schreiben, schreiben Sie einfach eine Anwendung, die der WSGI
-Spezifikation entspricht. Das Rad muss nicht wiederholt geschrieben werden. #🎜🎜##🎜🎜# Darüber hinaus kann WSGI
auch mit herkömmlichen Web
-Servern verbunden werden, wie zum Beispiel: nginx
, apache
und so weiter, um zu interagieren. #🎜🎜##🎜🎜## 🎜🎜#WSGI
legt fest, dass seine Anwendung ein Programm sein muss, das sein kann Das Objekt des Aufrufs Normalerweise ist das Objekt eine Funktion oder eine Klasse. Dieses Objekt muss zwei Parameter erhalten, nämlich das Wörterbuch environ
und die Funktion start_response
. Die Funktion start_response
sollte aufgerufen werden, bevor das Objekt endet. Die Funktion sollte die Parameter status
und headers
übergeben, wobei status
den Antwortstatuscode und -ausdruck sowie headers
definieren sollte sollte den Antwortheader definieren. #🎜🎜##🎜🎜#Wenn es im Code erklärt wird, sollte es so geschrieben werden: #🎜🎜#rrreee#🎜🎜# Unter diesen ist application
ein iterierbares Objekt, das 2 Parameter akzeptiert , einer ist environ
, sein Typ ist ein Wörterbuch, und der andere ist start_response
, sein Typ ist eine Funktion, vor dem Ende von application
, Es sollte die Funktion start_response
aufrufen und die Werte status
und headers
übergeben. #🎜🎜#Hallo, bestimmte Person.
zurück, Lass es uns tun. Mal sehen, wenn wir den WSGI
-Standard zum Schreiben der Business-Schicht verwenden, wie sollten wir den WSGI
-Server definieren und aufrufen. #🎜🎜##🎜🎜## 🎜🎜##🎜🎜#Wie oben erwähnt, haben wir einen Server eingeführt, der WSGI
entspricht: wsgiref.simple_server
, wir müssen nur dem Standard von WSGI Zum Schreiben der Geschäftsschicht, bei der es sich um die obige Anwendung
handelt. Als wir den Statuscode definiert haben, haben wir ihn wahrscheinlich auf 299 OK
gesetzt. Beim Festlegen des Anforderungsheaders haben wir einen Server
auf pdudo_web_sites
gesetzt. #🎜🎜##🎜🎜#Wir verwenden curl
, um den Server anzufordern. #🎜🎜##🎜🎜## 🎜🎜##🎜🎜#Ich habe festgestellt, dass man problemlos einen einfachen Server schreiben kann, solange es gemäß der WSGI
-Spezifikation geschrieben ist. #🎜🎜#Das obige ist der detaillierte Inhalt vonWas ist das Prinzip der Python-WSGI-Anwendung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!