WSGI和ASGI说明

/ 0评 / 0

在进行python升级过程中,使用django新版本创建新的project,框架中创建了asgi.py,和wsgi有什么区别,下面进行简单总结。

CGI:通用网关接口(Common Gateway Interface)是一个Web服务器主机提供信息服务的标准接口。通过CGI接口,Web服务器就能够获取客户端提交的信息,转交给服务器端的CGI程序进行处理,最后返回结果给客户端。

WSGI:全称Python Web Server Gateway Interface,指定了web服务器和Python web应用或web框架之间的标准接口,以提高web应用在一系列web服务器间的移植性。

ASGI:异步网关协议接口,介于网络服务和python应用之间的标准接口,能够处理多种通用的协议类型,包括http,http2和websocket。

总结:WSGI是基于http协议模式开发的,不支持websocket,而ASGI的诞生解决了python中的WSGI不支持当前的web开发中的一些新的协议标准,同时ASGI支持原有模式和Websocket的扩展,,即ASGI是WSGI的扩展。其中asgi使用asgi服务器uvicorn。

uvicorn:Uvicorn is a lightning-fast ASGI server implementation, using uvloop and httptools.
gunicorn:A Python WSGI HTTP Server for UNIX,You can use Gunicorn to manage Uvicorn and run multiple of these concurrent processes.That way, you get the best of concurrency and parallelism.