Wsgi
和Asgi
两个概念CGI (通用网关接口, Common Gateway Interface ), 定义了客户端和Web服务器的交流方法的一个程序。
例如正常情况下客户端发来一个请求,根据http协议Web服务器将请求内容解析出来,进过计算后,再将加us安出来的内容封装好,
例如服务器返回一个HTML页面,并且根据http协议构建返回内容的响应格式。涉及到TCP连接、http原始请求和相应格式的这些,都由一个软件来完成,这时,以上的工作需要一个程序来完成,而这个程序便是CGI。
Wsgi (Web服务器网关接口(Python Web Server Gateway Interface) 是为Python
语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。
Wsgi 区分为两部分:一种为“服务器”或“网关”,另一种为“应用程序”或“应用框架”。
所谓的Wsgi
中间件同时实现了API
的两方,即在Wsgi
服务器和Wsgi
应用之间起调解作用:从Wsgi
服务器的角度来说,中间件扮演应用程序,而从应用程序的角度来说,中间件扮演服务器。中间件具有的功能:
XSLT
样式表。总结一下,其实可以说Wsgi
就是基于Python
的以CGI
为标准做一些扩展。
Asgi 异步网关协议接口,一个介于网络协议服务和Python
应用之间的标准接口,能够处理多种通用的协议类型,包括http
,http2
和WebSocket
。
目前的常用的Wsgi
主要是针对http
风格的请求响应模型做的设计,并且越来越多的不遵循这种模式的协议逐渐成为Web
变成的标准之一,例如WebSocket
。
Asgi
尝试保持在一个简单的应用接口的前提下,提供允许数据能够在任意的时候、被任意应用进程发送和接受的抽象。并且同样描述了一个新的,兼容http
请求响应以及WebSocket
数据帧的序列格式。允许这些协议能通过网络或本地socket
进行传输,以及让不同的协议被分配到不同的进程中。Wsgi和Asgi的区别在哪
以上,Wsgi
是基于http
协议模式的,不支持WebSocket
,而Asgi
的诞生则是为了解决Python
常用的Wsgi
不支持当前Web
开发中的一些新的协议标准。同时,Asgi
对于Wsgi
原有的模式的支持和WebSocket
的扩展,即Asgi
是Wsgi
的扩展。
Asgi
Uvicorn : Uvicorn是使用uvloop和httptools的闪电般快速的Asgi服务器实现Hypercorn ; Hypercorn是基于sans-io hyper,h11,h2和wsproto库的ASGI Web服务器,其灵感来自Gunicorn。daphne : Daphne 是一个纯Python编写的应用于UNIX环境的由Django项目维护的Asgi服务器。它扮演着Asgi参考服务器的角色。
Wsgi
uWsgi : uWsgi是一个Web服务器,它实现了Wsgi协议、uwsgi、http等协议。Nginx中httpUwsgiModule的作用是与uWsgi服务器进行交换。Gunicorn : Gunicorn是一个unix上被广泛使用的高性能的Python Wsgi UNIX http Server。Wsgi / uwsgi / uWsgi 这三个概念的区分Wsgi看过前面小节的同学很清楚了,是一种通信协议。uwsgi同Wsgi一样是一种通信协议。而uWsgi是实现了uwsgi和Wsgi两种协议的Web服务器。
https://www.jianshu.com/p/65807220b44a
https://zhuanlan.zhihu.com/p/36448645 https://www.jianshu.com/p/69e75fc3e08e 总结
以上是内存溢出为你收集整理的WSGI&ASGI全部内容,希望文章能够帮你解决WSGI&ASGI所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)