Theme-Logo
    • 通知公告
  • [登录]/[注册]
  • D 返回首页
python3编程学习
  • 基础教程
    • 初识python
    • 语法特点
    • 输入输出
    • 运算符+
    • 数据类型
    • 类型转换
    • 条件控制
    • 循环语句
    • 函数详解
    • 面向对象
    • 模块详解
    • File(文件)
    • 字符串初级
    • 字符串进阶
    • 错误和异常
  • 高级教程
    • 数据库深操作
    • web网站开发
    • GUI界面开发
    • 网络爬虫开发
    • 游戏高级开发

WSGI技术简介

WSGI ( Web Gateway Interface),即服务器网关接口,是Web服务器和 web 应用程序或框架之间的一种简单而通用的接口。
  • 返回首页

FastCGI 的工作模式实际上没有什么太大缺陷,但是在 FastCGI 标准下写异步的 web 服务还是不方便,所以 WSGI 就被创造出来了。

WSGI ( Web Server Gateway Interface),即服务器网关接口,是Web服务器和 web 应用程序或框架之间的一种简单而通用的接口。从层级上来讲要比 CGI/FastCGI 高级。WSGI 中存在两种角色:接受请求的 Server(服务器)和处理请求的 Application(应用),它们底层是通过 FastCGI 沟通的。当 Server 收到一个请求后,可以通过 Socket 把环境变量和一个 Callback 回调函数传给后端 Application, Application在完成页面组装后通过 Callback 把内容返回给 Server,最后 Sever 再将响应返回给 Client。 整个流程如下图所示。

截屏2024-12-04 01.13.54.png

1、定义 WSGI 接口

WSGI 接口定义非常简单,它只要求 web 开发者实现一个函数,就可以响应 HTTP 请求。我们来看一个最简单的 Web 版本的“Hello World!”,代码如下:

def application(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/html')])
    return [b'<h1>Hello, world!</h1>']

上面的 application() 函数就是符合 WSGI 标准的一个 HTTP 处理函数,它接收两个参数:

environ:一个包含所有 HTTP 请求信息的字典对象。

start_response:一个发送 HTTP 响应的函数。

整个 application() 函数本身没有涉及任何解析 HTTP 的部分,也就是说,把底层 Web 服务器解析部分和应用程序逻辑部分进行了分离,这样开发者就可以专心于一个领域了。

可是要如何调用 application() 函数呢?environ 和 start_respons 这两个参数需要从服务器获取,所以 application() 函数必须由 WSGI 服务器来调用。现在,很多服务器都符合 WSGI 规范,如 Apache服务器 和 Nginx 服务器等。此外,Python 内置了一个 WSGI 服务器,这就是 wsgiref 模块。它是用 Python 编写的 WSGI 服务器的参考实现。所谓“参考实现”是指该实现完全符合 WSGI 标准,但是不考虑任何运行效率,仅供开发和测试使用。

2、运行 WSGI 服务

    本文未完全显示,开通会员查看全文......

回顶部