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给了你一个简单易用的抽象顾客。

注:如有描述不正的地方,请与我联系

posted @ 2020-12-17 15:34  柒路abc  阅读(1450)  评论(0编辑  收藏  举报