wsgi,wsgiref,uWSGI
作者:互联网
wsgi
wsgi:Web Server Gateway Interface
wsgi协议是py中的一个协议:规定了如何拆,封http协议
wsgiref模块(性能比较低,并发量低)
django内置是wsgiref模块
最简单的Web应用就是先把HTML用文件保存好,用一个现成的HTTP服务器软件,接收用户请求,从文件中读取HTML,返回。 如果要动态生成HTML,就需要把上述步骤自己来实现。不过,接受HTTP请求、解析HTTP请求、发送HTTP响应都是苦力活,如果我们自己来写这些底层代码,还没开始写动态HTML呢,就得花个把月去读HTTP规范。 正确的做法是底层代码由专门的服务器软件实现,我们用Python专注于生成HTML文档。因为我们不希望接触到TCP连接、HTTP原始请求和响应格式,所以,需要一个统一的接口协议来实现这样的服务器软件,让我们专心用Python编写Web业务。这个接口就是WSGI:Web Server Gateway Interface。而wsgiref模块就是python基于wsgi协议开发的服务模块。
uwsgi
uwsgi是一种线路协议,是uWSGI服务器的独占协议,用于定义传输信息的类型(type of information),每一个uwsgi packet 前4byte为传输信息类型的描述,与WSGI协议是两种东西。
uWSGI
django项目部署实际上是uWSGI
c语言实现的 uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。 django项目部署实际上是uWSGI,他才是web服务器,而不是uwsgi。
有了uWSGI为什么还需要nginx?
因为nginx具备优秀的静态内容处理能力,然后将动态内容转发给uWSGI服务器,这样可以达到很好的客户端响应。支持的并发量更高,方便管理多进程,发挥多核的优势,提升性能。 这时候nginx和uWSGI之间的沟通就要用到uwsgi协议。
其它socket服务端
'cgi': CGIServer, 'flup': FlupFCGIServer, 'wsgiref': WSGIRefServer, 'waitress': WaitressServer, 'cherrypy': CherryPyServer, 'paste': PasteServer, 'fapws3': FapwsServer, 'tornado': TornadoServer, 'gae': AppEngineServer, 'twisted': TwistedServer, 'diesel': DieselServer, 'meinheld': MeinheldServer, 'gunicorn': GunicornServer, 'eventlet': EventletServer, 'gevent': GeventServer, 'geventSocketIO': GeventSocketIOServer, 'rocket': RocketServer, 'bjoern' : BjoernServer, 'auto': AutoServer,
标签:Web,wsgi,HTTP,wsgiref,HTML,uwsgi,uWSGI 来源: https://www.cnblogs.com/zhaoyuanshi/p/16305117.html