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,

 

posted @ 2022-05-24 12:18  那就凑个整吧  阅读(65)  评论(0编辑  收藏  举报