在进行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.