Python WSGI 规范

作为 Python Web 开发者来说,在开发程序阶段一般是不会接触到 WSGI 这个名词的,但当程序开发完成,考虑上线部署的时候,WSGI 规范是一个绕不开的话题,本文将介绍何为 WSGI。

WSGI 全拼 Web Server Gateway Interface,是为 Python 语言定义的 Web 服务器和 Web 应用程序(或框架)之间的一种通用编程接口。翻译成白话就是说 WSGI 是一个协议,就像 HTTP 协议定义了客户端和服务端数据传输的规范,WSGI 协议定义了 Web 服务器和 Web 应用程序之间协同工作的规范。

Python Web 应用部署方案

FlaskDjango 等 Web 框架都提供了内置的 Web Server,本地开发阶段可以使用 flask runpython manage.py runserver 来分别启动 FlaskDjango 内置的 Server。

在生产环境部署应用时,通常不会使用框架内置的 Server,而是使用 GunicornuWSGI 来部署,以获得更好的性能。部署过 Python Web 应用的同学应该对如下部署架构有所了解,左侧是浏览器,右侧是服务器。在服务器内部,首先通过 Nginx 来监听 80/443 端口,当接收到来自客户端的请求时,Nginx 会将请求转发到监听 5000 端口的 Gunicorn/uWSGI Server,接着请求会通过 WSGI 协议被传递到 Flask/Django 框架,在框架内部处理请求逻辑后,会将响应信息按照原路返回。
Python Web Server Deploy
你可能会问,Nginx 性能很高,为什么不将应用直接部署到 Nginx 上,而是中间通过 Gunicorn/uWSGI 做一层转发呢?因为 Nginx 没有遵循 WSGI 规范,并不能像 Gunicorn/uWSGI 这样很容易的与 Flask/Django 框架结合起来。

WSGI 规范

根据 Python Web 应用部署架构,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python WSGIPython Web服务器网关接口的缩写,它是一种用于连接Web服务器和Python应用程序的规范WSGI允许开发人员使用统一的接口来开发Web应用程序,无论使用哪种Web服务器。WSGI通过定义一组规则和约定,使得编写Web应用程序变得更加简单和可扩展。 在Python中,可以使用uWSGI作为基于WSGI协议的功能强大的Web服务器,同时也支持Python WSGI协议。uWSGI性能很好,但配置相对复杂。 通常,一个WSGI应用程序由一个可调用的对象组成,该对象接收两个参数,分别是environ和start_response。environ包含与请求相关的环境变量,而start_response是一个用于发送响应头的函数。通过调用start_response函数,应用程序可以发送响应状态码和响应头给Web服务器,然后将返回的数据作为可迭代对象返回给Web服务器。 当Web服务器收到请求时,它将环境变量和回调函数传递给WSGI应用程序,应用程序处理请求并生成响应。然后,Web服务器将响应返回给客户端。这种方式可以使不同的Web服务器与不同的应用程序框架进行交互,实现了服务器和应用程序的解耦。[2, 3] 总结来说,Python WSGI是一种连接Web服务器和Python应用程序的规范,它提供了一种统一的接口来开发Web应用程序。uWSGI是一个基于WSGI协议的强大的Web服务器。通过WSGI,可以实现Web服务器和应用程序的解耦,使得开发和部署Web应用程序变得更加灵活和可扩展。[1, 2, 3]<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Python基础入门教程:WSGI](https://blog.csdn.net/weixin_33798152/article/details/91396901)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Python WSGI的深入理解](https://download.csdn.net/download/weixin_38746515/14869908)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值