이 기사가 의존하는 python
환경은 다음과 같습니다: 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
는 웹
서버 범용 게이트웨이 인터페이스라고도 합니다. 전체 이름은 웹 서버 게이트웨이 인터페이스
입니다. 이는 웹
서버와 python
의 웹
애플리케이션이 http
요청과 통신하고 처리하는 방법을 정의합니다. 이전 기사에서 작성한 웹
서버처럼 이 표준을 따를 필요는 없습니다. 🎜🎜WSGI
도 애플리케이션과 서버 게이트웨이로 구분됩니다. 그 중 잘 알려진 Flask
는 애플리케이션인 uWSGI
, 에 속합니다. wsgiref는 서버 게이트웨이에 속합니다. 🎜🎜개인적으로 <code>WSGI
는 바퀴를 재발명하는 것을 피하고 작업을 더 잘하는 사람들이 할 수 있도록 합니다. 서버를 작성하는 경우 WSGI
사양을 준수하는 서버를 작성하면 됩니다. 애플리케이션을 작성하는 경우 WSGI
사양을 준수하는 애플리케이션을 작성하세요. 휠을 반복해서 쓸 필요가 없습니다. 🎜🎜또한 WSGI
는 nginx
, apache
와 같은 기존 웹
서버와 연결할 수도 있습니다. 등 상호 작용합니다. 🎜🎜🎜WSGI
는 애플리케이션이 호출 가능한 객체여야 한다고 규정합니다. 일반적으로 객체는 함수입니다. 아니면 수업. 이 객체는 environ
사전과 start_response
함수라는 2개의 매개변수를 받아야 하며, start_response
함수는 객체가 끝나기 전에 호출되어야 합니다. 함수는 status
및 headers
매개변수를 전달해야 하며, 여기서 status
는 응답 상태 코드 및 구문과 headers
를 정의해야 합니다. 응답 헤더를 정의해야 합니다. 🎜🎜코드로 설명한다면 다음과 같이 작성해야 합니다:🎜rrreee🎜그 중 application
은 2개의 매개변수를 허용하는 반복 가능한 객체입니다. 하나는 environ code>이고, 해당 유형은 사전 또는 <code>start_response
이고 해당 유형은 application
이 끝나기 전에 start_response
함수를 호출해야 합니다. 상태
및 헤더
값을 전달합니다. 🎜Hello, Destined Person.
을 반환합니다. 우리는 WSGI
표준을 사용하여 비즈니스 레이어를 작성하고, 어떻게 정의해야 하며 WSGI
서버를 호출하는 방법을 설명합니다. 🎜🎜🎜🎜위에서 우리는 WSGI
: wsgiref.simple_server
를 준수하는 서버를 도입했습니다. WSGI
표준에 따라 비즈니스 계층만 작성하면 됩니다. 위의 애플리케이션
이면 충분합니다. 상태 코드를 정의할 때 아마도 299 OK
로 설정했을 것입니다. 요청 헤더를 설정할 때 Server
를 pdudo_web_sites
로 설정했습니다. 🎜🎜우리는 서버를 요청하기 위해 curl
을 사용합니다. 🎜🎜🎜🎜발견하세요, 오 , WSGI
사양에 따라 작성하면 간단한 서버를 쉽게 작성할 수 있습니다. 🎜위 내용은 Python WSGI 응용 프로그램의 원리는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!