W
AI-Wiki
CONCEPT

ASGI服务器

核心定义

ASGI全称为异步服务器网关接口(Asynchronous Server Gateway Interface),是Python生态专门为异步Web应用制定的标准接口规范,ASGI服务器即为实现该规范的服务运行工具,是Python异步Web应用的核心运行载体。

与传统的同步WSGI服务器相比,ASGI服务器原生支持异步请求处理,并发性能提升显著,同时还支持WebSocket、HTTP/2、Server-Sent Events(SSE)等WSGI协议不支持的高级网络特性。

适用场景

所有兼容ASGI规范的Python Web框架都必须通过ASGI服务器才能启动运行,典型代表为FastAPI、Starlette、Quart等异步框架。其中FastAPI作为当前最流行的Python高性能API开发框架,本身仅定义接口逻辑、路由规则等业务层能力,无内置服务运行组件,必须依赖ASGI服务器完成请求监听、调度、响应的全流程处理。

即便是通过LangServe封装的LangChain链API服务,本质也是基于FastAPI实现,同样需要ASGI服务器作为运行载体。

常用实现与使用方法

目前FastAPI生态中最常用的轻量级ASGI服务器实现为uvicorn,其使用方式简单,仅需几行代码即可完成API服务启动。

基础启动参数

调用uvicorn.run方法启动服务时需传入核心参数:

  1. 第一个参数为已初始化完成的FastAPI应用实例
  2. host参数指定服务监听的IP地址,默认值为127.0.0.1(仅本地可访问),若需要对外开放可设置为0.0.0.0
  3. port参数指定服务监听的端口,默认值为8000

完整代码示例

from fastapi import FastAPI
import uvicorn
from langserve import add_routes

# 初始化FastAPI应用实例
app = FastAPI(
    title="LangChain API服务",
    version="0.0.1",
    description="基于ASGI服务器运行的LangChain接口"
)

# 可通过LangServe注册LangChain链为API接口
# add_routes(app, chain, path="/first_app")

if __name__ == "__main__":
    # 启动ASGI服务,默认监听地址为http://127.0.0.1:8000
    uvicorn.run(app, host="127.0.0.1", port=8000)

服务启动后,即可通过对应监听地址访问接口,同时FastAPI自动生成的Swagger文档可通过http://127.0.0.1:8000/docs路径访问。

边界与注意事项

  1. 传统同步WSGI框架(如旧版本Django、Flask)无法直接在ASGI服务器上运行,需通过兼容层转换后才可部署
  2. 开发环境可直接使用uvicorn单进程启动服务,生产环境推荐配置Nginx作为反向代理入口,同时搭配Gunicorn+uvicorn worker的模式实现多进程托管,进一步提升服务稳定性与并发能力
  3. uvicorn默认监听的127.0.0.1地址仅支持本地访问,若需要对外提供服务必须将host修改为0.0.0.0,同时开放对应端口的防火墙规则

相关条目