WSGI,uWSGI和uwsgi的区别
WSGI,uWSGI和uwsgi的区别
最近不想玩爬虫了 心血来潮 想写一个web网站 重新捡起已经遗忘的后端知识,算是对自己复习的一种记录 首先复习一下比较重要也是面试容易问到的问题 WSGI,uWSGI和uwsgi的区别 其实就是两协议 一个服务器
WSGI
WSGI,全称 Web Server Gateway Interface,或者 Python Web Server Gateway Interface ,是为 Python 语言定义的 Web 服务器和 Web 应用程序或框架之间的一种简单而通用的接口描述的是Web服务器如何与Web应用间进行通信
它不是服务器、python模块、框架、API或者任何软件,只是一种描述web服务器(如nginx,uWSGI等服务器)如何与web应用程序(如用Django、Flask框架写的程序)通信的规范。
WSGI 的官方定义是,the Python Web Server Gateway Interface。从名字就可以看出来,这东西是一个Gateway,也就是网关。网关的作用就是在协议之间进行转换。
uwsgi
uwsgi:同WSGI一样是一种通信协议
uwsgi协议是一个uWSGI服务器自有的协议,它用于定义传输信息的类型,它与WSGI相比是两样东西。
uWSGI
uWSGI是实现了uwsgi和WSGI两种协议的Web服务器,负责响应python 的web请求。
总结
(图片来源网络)
在网上扒拉了一张挺不错的图片来进行总结(只看第二条) 用户通过浏览器访问站点 首先经过nignx服务器 传输到uWSGI服务器上面 再通过WSGI与uwsgi协议(图片有错)传输到web应用上面
(网上扒拉的第二张图片)
WSGI 是一种协议作用于web server 与web application的传输 --------》是一种协议
uwsgi 是uWSGI服务器自带的一种协议 它用于定义传输信息的类型(二进制)--------》是一种协议
uWSGI 实现了uwsgi和WSGI两种协议的Web服务器--------》是服务器
从上面也能看出为什么有了Nginx还需要uWSGI服务器 因为Nginx不支持WSGI协议无法直接讲Python的web应用部署到Nginx上面 但是你可以直接将web应用部署到支持WSGI的服务器之上(如uWSGI/Gunicorn)
web server 与 web application
上面说到了web服务与web应用 简单的讲一下两者的区别
web server
web服务 又名http server:主要处理静态网页http,css,代表作apache,Nginx 速度快
通俗的讲web服务就是使用户可以访问到你的网站例如图片 HTML CSS JS等 例如我访问了一张图片这个过程不需要flask或者django来进行处理吧 我直接根据网址就能访问到吧
web application
web服务 通俗的讲就是给用户开放的接口或者功能 例如我们的登录 搜索等等(flask、django)
一个不太准确的理解就是web服务就是我们的服务器让别人能够访问 web应用就是我们写的项目