L'environnement python
sur lequel s'appuie cet article est : 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
est également appelé Le nom complet de l'interface de passerelle universelle du serveur web
est interface de passerelle du serveur Web
. Il définit comment le serveur web
et l'application web
dans python
doivent communiquer et gérer les requêtes http
et une norme pour réponse. Notez qu'il s'agit simplement d'un protocole, ou d'une spécification ou d'un standard. Vous n'êtes pas obligé de suivre ce standard, tout comme le serveur web
que nous avons écrit dans l'article précédent. #🎜🎜##🎜🎜#WSGI
est également divisé en applications et passerelles de serveur. Parmi elles, le célèbre Flask
appartient aux applications, et uWSGI<.> , <code>wsgiref
appartient à la passerelle du serveur. #🎜🎜##🎜🎜#Personnellement, WSGI
évite de réinventer la roue et laisse les gens qui savent mieux faire les choses le faire. Si vous écrivez un serveur, écrivez-le en conformité avec le WSGI.
. Utilisez simplement un serveur. Si vous écrivez une application, écrivez simplement une application conforme à la spécification WSGI
. Pas besoin d'écrire la roue à plusieurs reprises. #🎜🎜##🎜🎜# De plus, WSGI
peut également être connecté aux serveurs web
traditionnels, tels que : nginx
, apache
et ainsi de suite pour interagir. #🎜🎜##🎜🎜## 🎜🎜#WSGI
stipule que son application doit être une application qui peut être L'objet de l'appel, généralement, l'objet est une fonction ou une classe. Cet objet doit recevoir 2 paramètres, qui sont le dictionnaire environ
et la fonction start_response
, et la fonction start_response
doit être appelée avant la fin de l'objet. La fonction doit transmettre les paramètres status
et headers
, où status
doit définir le code et la phrase d'état de la réponse, et headers
devrait définir l’en-tête de réponse. #🎜🎜##🎜🎜#Si c'est expliqué dans le code, il faut l'écrire comme ceci : #🎜🎜#rrreee#🎜🎜# Parmi eux, application
est un objet itérable, accepté 2 paramètres , l'un est environ
, son type est un dictionnaire, et l'autre est start_response
, son type est une fonction, avant la fin de application
, il doit appeler la fonction start_response
et transmettre les valeurs status
et headers
. #🎜🎜#Bonjour, personne destinée.
, faisons-le Voyons, si nous utilisons le standard WSGI
pour écrire la couche métier, comment devons-nous définir et comment appeler le serveur WSGI
. #🎜🎜##🎜🎜## 🎜🎜##🎜🎜#Comme mentionné ci-dessus, nous avons introduit un serveur conforme à WSGI
: wsgiref.simple_server
, il nous suffit de suivre le standard de WSGI
Pour écrire la couche métier, qui est l'application
ci-dessus. Lorsque nous avons défini le code d'état, nous l'avons probablement défini sur 299 OK
. Lors de la définition de l'en-tête de la requête, nous avons défini un Serveur
sur pdudo_web_sites
. #🎜🎜##🎜🎜#Nous utilisons curl
pour demander le serveur. #🎜🎜##🎜🎜## 🎜🎜##🎜🎜#J'ai trouvé que, oh, tant qu'il est écrit selon la spécification WSGI
, vous pouvez facilement écrire un serveur simple. #🎜🎜#Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!