FastAPI大文件上传间歇性挂起:请求未抵达端点即停滞
FastAPI大文件上传间歇性挂起问题
环境
FastAPI搭配Uvicorn作为ASGI服务器
问题描述
上传约3.6MB的较大文件时,请求偶尔会在到达端点处理代码前无限挂起;上传约6KB的小文件从未出现该问题。问题呈间歇性随机出现,且未伴随任何代码或环境变更,定位原因难度较大。
症状
请求挂起无规律,并非每次都会触发。出现挂起时,请求完全未抵达端点逻辑,因此端点内的打印语句、日志均不会执行。
代码示例
from fastapi import FastAPI, File, UploadFile import uvicorn from uvicorn.config import Config import asyncio import logging logging.basicConfig(level=logging.DEBUG) logger = logging.getLogger(__name__) app = FastAPI() @app.post("/uploadfile/") async def create_upload_file(file: UploadFile = File(...)): print("This print statement does not execute when the issue occurs.") await asyncio.sleep(5) # Simulate processing delay return {"message": "Success"} if __name__ == "__main__": config = Config(app=app, host="0.0.0.0", port=3092, log_level="info") server = uvicorn.Server(config=config) server.run()
已尝试的调试措施
- 使用aiofiles实现异步文件保存,试图减少内存问题与阻塞IO影响,但未解决问题
- 将日志级别提升至DEBUG后发现:请求挂起时,multipart数据的处理流程启动后会中途停滞,无法完成整个multipart解析过程
内容的提问来源于stack exchange,提问作者nomalDev
相关产品推荐
相关产品推荐

