wsgi和asgi的关系
什么是WSGI
#CGI
CGI(Common Gateway Interface,通用网关接口),定义客户端与Web服务器的交流方式的一个程序,例如正常情况下客户端发送过来一个请求,根据HTTP协议Web服务器将请求的内容解析出来,
经过处理会后,再将返回的内容封装好。例如服务器返回一个HTML页面,并且根据HTTP协议构建返回内容的响应格式,涉及到TCP连接、HTTP原始请求和相应格式都是由一个软件来完成,这个程序就是CGI。
#WSGI
WSGI(Python Web Server Gateway Interface,WSGI)Web服务器网关接口,是为Python语言定义的Web服务器和Web应用程序或框架之间的联系,那个简单而且通用的接口,
从语义上理解,WSGI为了解决Web服务器与客户端之间的通信问题而产生的。并且WSGI是基于现存的CGI标准而设计的,同样是一种程序
#ASGI
ASGI是异步网关协议接口,介于网络服务和python饮用应用之间的标准接口,能够处理多种通用的协议类型,包括http,http2和websocket.
#关于WSGI和ASGI的区别是
WSGI是基于http协议模式开发的,不支持websocket,而ASGI的诞生解决了python中的WSGI不支持当前的web开发中的一些新的协议标准,同时ASGI支持原有模式和Websocket的扩展, 即ASGI是WSGI的扩展.
HTTP的一个例子:
用户发出一个HTTP请求。
我们打开了一个新的http键入包含请求路径、方法、头等详细信息的范围。
我们发送一个http.request带有HTTP正文内容的事件
channels或ASGI应用程序对此进行处理,并生成http.response事件发送回浏览器并关闭连接。
HTTP请求/响应完成,作用域被破坏。
#注:一次客户端发出请求,服务器接收并回应请求消息,客户端停止访问,页面不动,服务断开,这就是cgi,在python里面它就是wsgi
聊天机器人的一个例子:
用户向聊天机器人发送第一条消息。
这将打开一个包含用户用户名、所选名称和用户标识的范围。
应用程序给出了一个chat.received_message使用eventtext事件。它不需要响应,但可以将一条、两条或更多其他聊天消息作为chat.send_message如果它想的话。
用户向聊天机器人发送更多信息chat.received_message事件被生成。
超时后或应用程序进程重新启动时,范围被关闭。
HTTP请求/响应完成,作用域被破坏
#注:用户向聊天机器人发送消息,通道打开,也就是范围开启,聊天机器人可以回应也可以不回应,在超时后或应用程序进程重新启动时,通道关闭,范围关闭,聊天结束。在下一次用户发送消息,通道打开,聊天继续
总结
在一个作用域的生命周期内——无论是聊天、HTTP请求、socketconnection还是其他什么——您将有一个应用程序实例处理其中的所有事件,并且您还可以将事情持久化到应用程序实例上。
如果你愿意,你可以选择写一个原始的ASGI应用程序,但是channels给了你一个简单易用的抽象顾客。
注:如有描述不正的地方,请与我联系
wsgi和asgi的关系的更多相关文章
- 如何理解Nginx, WSGI, Flask之间的关系
概览 之前对 Nginx,WSGI(或者 uWSGI,uwsgi),Flask(或者 Django),这几者的关系一存存在疑惑.通过查阅了些资料,总算把它们的关系理清了. 总括来说,客户端从发送一个 ...
- uWSGI、uwsgi、WSGI、之间的关系,为什么要用nginx加uWSGI部署。
WSGI 协议 WSGI:是一种协议规范,起到规范参数的作用,就像告诉公路一样,规定超车靠右行,速度不低于90km/h,等.但这一切都是对双方进行沟通,比如,重庆到武汉这条高速路,这儿重庆和武汉就各为 ...
- 2020年是时候更新你的技术武器库了:Asgi vs Wsgi(FastAPI vs Flask)
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_167 也许这一篇的标题有那么一点不厚道,因为Asgi(Asynchronous Server Gateway Interface) ...
- 区分wsgi、uWSGI、uwsgi、php-fpm、CGI、FastCGI
在学习Python web开发时候,可能会遇到诸如uwsgi,wsgi等名词,下面通过梳理总结探究它们之间的关系. CGI CGI,(Common Gateway Interface)通用网关接口,是 ...
- 九、Django3的ASGI
九.Django3的ASGI 9.1.Web应用程序和web服务器 Web应用程序(Web)是一种能完成web业务逻辑,能让用户基于web浏览器访问的应用程序,它可以是一个实现http请求和响应功能的 ...
- Python面试题整理-更新中
几个链接: 编程零基础应当如何开始学习 Python ? - 路人甲的回答 网易云课堂上有哪些值得推荐的 Python 教程? - 路人甲的回答 怎么用最短时间高效而踏实地学习 Python? - 路 ...
- 高并发异步uwsgi+web.py+gevent
为什么用web.py? python的web框架有很多,比如webpy.flask.bottle等,但是为什么我们选了webpy呢?想了好久,未果,硬要给解释,我想可能原因有两个:第一个是兄弟项目组用 ...
- BAT-Python面试题
Python语言特性 1 Python的函数参数传递 看两个如下例子,分析运行结果: 代码一: a = 1 def fun(a): a = 2 fun(a) print(a) # 1 代码二: a = ...
- 测开面试 | Python语言常见问题
1.面向对象的概念? 面向对象编程,简称OOP,是一种程序设计思想 主要包括:类.继承.多态(子类方法覆盖父类方法).实例.属性.方法 2.什么是进程.线程.协程? 进程:独立数据空间,进程间不共享数 ...
随机推荐
- python-网络安全编程第一天(requests模块)
前言 感觉现在做好多CTF题都需要python去写工具,正好期末考试放假利用空余时间来学学. requests简介 Requests是用python语言基于urllib编写的,采用的是Apache2 ...
- kali 系列学习04 - 漏洞扫描
一.比较三类漏洞扫描工具 1.Rapid7 Nexpose 适合较大网络 2.Nessus 更经济,可以申请个人版,搞之后硬盘占用达到20G 以上2个是商业软件,使用容易上手,输入IP地址就能完成所有 ...
- 来看看面试必问的HashMap,一次彻底帮你搞定HashMap源码
HashMap结构 数组+链表+红黑树 链表大于8转红黑树,红黑树节点数小于6退回链表. 存放的key-value的Node节点 static class Node<K,V> implem ...
- Vegas媒体生成器是什么,有什么作用
在专业视频剪辑软件-Vegas的界面中,有一个媒体生成器的界面,此界面包含HitFilm Light Flares,Pro Type Titler,测试图案,纯色,棋盘格,色彩渐变,噪声纹理,致谢字幕 ...
- FL studio系列教程(十六):FL Studio查看菜单讲解
FL Studio中每个窗口的显示.隐藏和布局命令都在查看菜单中.其中它被分为窗口.布局和浏览器3个部分,各项名称都有其单独的作用.窗口部分主要是软件的显示的一些菜单这里就不详细讲解了,接下来我们重点 ...
- 堆的数据结构java
public class MaxHeap { private int[] data; private int count; private int capacity; public MaxHeap(i ...
- 解决YUM下Loaded plugins: fastestmirror Determining fastest mirrors 的错误问题
最近想再购买一台虚拟服务器做项目测试,之前在西部数码购买的已经过期了,在同事的推荐下去搬瓦工购买了一台服务器,听他介绍在这里购买服务器很便宜($19.99/年)而且还是国外的,看着相比之前的确实挺便宜 ...
- 区块链V1版本实现之五
代码重构: block.go文件: package main import ( "crypto/sha256" ) //定义区块结构 type Block struct { //前 ...
- Windows10下的MediaWiki的部署启动
MediaWiki是使用PHP开发的,PHP是比较成熟的Web脚本语言,要想运行基于PHP的程序,你需要配置PHP的运行环境.MediaWiki使用数据库来保存数据等信息,支持MySQL和Postgr ...
- 音视频入门-18-手动生成一张GIF图片
* 音视频入门文章目录 * GIF 编码知识 GIF 包含的数据块: 文件头(Header) 逻辑屏幕标识符(Logical Screen Descriptor) 全局颜色表(Global Color ...