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方法启动服务时需传入核心参数:
- 第一个参数为已初始化完成的FastAPI应用实例
host参数指定服务监听的IP地址,默认值为127.0.0.1(仅本地可访问),若需要对外开放可设置为0.0.0.0port参数指定服务监听的端口,默认值为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路径访问。
边界与注意事项
- 传统同步WSGI框架(如旧版本Django、Flask)无法直接在ASGI服务器上运行,需通过兼容层转换后才可部署
- 开发环境可直接使用uvicorn单进程启动服务,生产环境推荐配置Nginx作为反向代理入口,同时搭配Gunicorn+uvicorn worker的模式实现多进程托管,进一步提升服务稳定性与并发能力
- uvicorn默认监听的
127.0.0.1地址仅支持本地访问,若需要对外提供服务必须将host修改为0.0.0.0,同时开放对应端口的防火墙规则