Python WSGI的深入理解攻略
什么是WSGI?
WSGI(Web服务器网关接口)是Python语言定义的一个WEB服务的标准接口,即通过 Python 的“可调用对象”来来处理 HTTP 请求和响应数据的方式,它是一个简单而通用的Web 服务器与Web 应用程序或框架之间的接口。WSGI 规范简化了应用程序和服务器等web组件之间的分离,从而促进了应用程序的可移植性,可以运用多种web服务器上,提高了 Django,Flask 等web框架和Web服务器的兼容性等。
WSGI 的工作流程
WSGI 通过一个类似于中间件的方式进行工作流模型的实现,它可以让Web服务器和Web服务框架分别实现各自的逻辑,从而提高应用程序的灵活性,下面为 WSGI 的典型工作流程图。
sequenceDiagram
Browser->>Web Server: 发送 HTTP请求
Web Server->>Web应用: 解析HTTP请求
Web应用->>Web Server: 处理 HTTP请求并返回响应
Web Server->>Web应用: 获取响应,送回浏览器
Python WSGI 接口规范
WSGI 规范分为2个接口, 分别是应用程序和服务器接口,分别对应可调用的对象和服务器:
# WSGI 应用程序接口
def application(environ, start_response):
"""
environ: 包含了客户端请求信息的字典对象
start_response: 一个可调用的对象,接受2个参数,状态码和Headers
return: 返回body,即本次请求处理的返回体
"""
pass
# WSGI 服务器接口
def start_response(status, headers):
pass
实例1:使用Python标准库实现一个简单的 WSGI 应用程序
下面通过一个简单的 WSGI 应用程序,来更好的理解 WSGI接口、及工作流程。WSGI 的实例代码如下。
def simple_app(environ, start_response):
# 获取状态码, 默认为 200
status = '200 OK'
# 设置 Headers
response_headers = [('Content-type', 'text/plain')]
# 发送 Headers
start_response(status, response_headers)
# 返回了应答体
return [b'Welcome to My WSGI Application\n']
实例2: Django 框架中的 WSGI
Django 是非常流行的 Web 开发框架,其中WGSi接口的部分被独立为WGSi的引擎,可以单独拿来使用,一下为Django 使用 WSGI 的实例代码:
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings') # 将 settings 设置为自己的 Django 项目设置文件
application = get_wsgi_application() # 启动 wsgi 引擎并返回 application
结论
WSGI 是Python 语言定义的一个 WEB 服务标准接口,WSGI 规范简化了应用程序和服务器等web组件之间的分离,从而促进了应用程序的可移植性,下面通过实际的例子更好地理解Python WSGI的概念、原理、以及实现的方式。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python WSGI的深入理解 - Python技术站