You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中使用ASGI2版本应用?有哪些ASGI2兼容应用?

关于ASGI 2版本的使用及相关应用

一、如何使用ASGI 2版本

ASGI 2属于旧版本协议,目前主流框架多已转向ASGI 3,但仍有两种方式可以使用ASGI 2:

1. 在ASGI 3框架中兼容运行ASGI 2应用

可以借助asgiref库中的ASGI2Adapter做协议适配,把ASGI 2应用转换为ASGI 3兼容的格式。示例代码如下:

from asgiref.adapters import ASGI2Adapter

# 定义一个标准的ASGI 2应用
def asgi2_application(scope):
    def start_response(status, response_headers):
        # 处理响应状态码和响应头的逻辑
        pass
    # 返回响应内容迭代器
    return iter([b"ASGI 2 Protocol Response"])

# 适配为ASGI 3兼容的应用
adapted_app = ASGI2Adapter(asgi2_application)

# 直接运行适配后的应用即可
application = adapted_app

如果是基于Django这类支持ASGI 3的框架,也可以用同样的方式把ASGI 2应用集成进去。

2. 使用原生支持ASGI 2的旧版本框架

直接安装框架的历史版本,比如:

  • 安装支持ASGI 2的Starlette旧版本:pip install starlette==0.13.6
  • 安装对应版本的FastAPI:pip install fastapi==0.61.2(依赖的Starlette版本支持ASGI 2)

二、除Django外,原生支持ASGI 2的应用/框架

  • Starlette(旧版本):0.14.0版本之前的Starlette基于ASGI 2开发,后续版本全面切换到ASGI 3。
  • FastAPI(旧版本):早期版本依赖的Starlette支持ASGI 2,因此对应版本的FastAPI也兼容ASGI 2。
  • Uvicorn(旧版本):0.12.x及更早版本的ASGI服务器,同时支持ASGI 2和ASGI 3协议。
  • Quart(旧版本):Quart的早期版本原生支持ASGI 2,后续迭代更新到ASGI 3。
  • Sanic(旧版本):部分旧版本的Sanic框架提供ASGI 2协议支持。

内容的提问来源于stack exchange,提问作者김재영

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 07:32:43