Python Web应用程序长期以来一直遵循Web服务器网关接口(WSGI)标准,该标准描述了它们如何与Web服务器通信。WSGI最初于2003年推出,并于2010年更新,仅依赖于Python2.2版本中原生可用的、易于实现的功能。因此, WSGI迅速融入了所有主要的Python Web框架,并成为Python Web开发的基石。
快进到2022年。Python2已经过时,Python现在具有处理网络调用等异步操作的原生语法。WSGI和其他默认假定同步行为的标准无法利用异步的性能和效率增益。这反过来又意味着WSGI不能有效地处理像WebSocket这样的高级协议。
输入ASGI,即异步服务器网关接口。与WSGI类似,ASGI描述了Python Web应用程序和Web服务器之间的通用接口。与WSGI不同的是,ASGI允许每个应用程序有多个异步事件。另外,ASGI支持同步和异步应用程序。开发人员可以将原有的同步WSGI Web应用程序迁移到ASGI,也可以使用ASGI构建新的异步Web应用程序。
1.WSGI的工作原理
WSGI的工作原理是向Web服务器公开Python函数,通常命名为应用程序或app。该函数采用两个参数:
函数返回的数据构成响应体。
一个简单的应用程序函数可能如下所示:
def application(environ, start_response):
start_response('200 OK', [('Content-Type', 'text/plain')])
return [b'Greetings universe']<