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

FastAPI接收Base64请求响应过慢问题求助

问题分析与解决方案

核心原因

你的代码和测试场景存在两个潜在问题,导致Swagger UI中响应延迟:

  1. 异步端点包含纯同步代码:你用async def定义端点,但内部没有任何异步操作(无await语句)。这种情况下,FastAPI会把同步代码直接运行在ASGI事件循环中,虽然单请求处理逻辑执行很快,但可能阻塞事件循环,拖慢响应返回的时机。
  2. Swagger UI的大请求体处理开销:你的请求体包含1.4MB左右的字符串,Swagger UI在发送大请求、渲染响应时,浏览器层面会有额外的处理开销,导致你感知到响应延迟(但服务器实际已经完成处理)。

解决方案

1. 改用同步端点(最直接有效)

将async def改为def,FastAPI会自动把同步端点的代码放到线程池中执行,不会阻塞事件循环,确保处理完成后快速返回响应:

# pip install fastapi
# fastapi dev main.py
from fastapi import FastAPI
from typing import Any, Dict
app = FastAPI()

@app.post("/fast")
def root(data:Dict[Any,Any]):  # 移除async关键字
    doc = data['doc']
    print(len(doc)) # 1459305
    return {"success":len(doc)}

2. 绕过Swagger UI验证真实响应速度

用curl或Postman等工具直接发送请求,排除Swagger UI的前端影响:

curl -X POST "http://localhost:8000/fast" -H "Content-Type: application/json" -d '{"doc":"JVBERi0xLjMgCjEgMCBvYmoKPDwK..<-- 1459305 total chars-- >.Tk2MzU1NTM4OTY4NGIzYTBlNjIwZjA+XQo+PgpzdGFydHhyZWYKMTA5MzMzNQolJUVPRgo="}'

如果这个请求能快速返回,说明问题出在Swagger UI的前端处理,而非服务器逻辑。

3. 调整Uvicorn服务器设置(可选)

如果是服务器层面的传输延迟,可以在启动时调整Uvicorn参数,比如增加多进程或延长超时时间:

fastapi dev main.py --workers 2 --timeout-keep-alive 60

内容的提问来源于stack exchange,提问作者christopher johnson mccandless

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 19:12:26