使用FastAPI做人工智能后端服务器时,接口内的操作不是异步操作的解决方案

在做AI模型推理的接口时,这时候接口是非异步的,但是uvicorn运行FastAPI时就会出现阻塞所有请求。

这时候需要解决这个问题:

api.py

python 复制代码
import asyncio
from fastapi import FastAPI
from fastapi.responses import StreamingResponse
import time
import io
import uvicorn

app = FastAPI()


def my_io(num):
    print(num)
    time.sleep(20)

@app.get("/hello")
async def hello():
    loop = asyncio.get_event_loop()

    # my_io 里包含不支持异步操作的代码, 所以就使用线程池来配合实现了。
    future = loop.run_in_executor(None , my_io , 666)
    response = await future
    print("运行完成", response)
    return {"message" : "success"}

def read_image_data(image_path : str):
     with open(image_path , "rb") as fr:
            datas = fr.read()
            return datas

@app.get("/show_image/{image_path:path}")
async def show_image(image_path : str):
    datas = await asyncio.get_event_loop().run_in_executor(None , read_image_data , image_path)
    bytes = io.BytesIO(datas)
    return StreamingResponse(bytes , media_type="image/png")
    

if __name__ == "__main__":
    uvicorn.run("api:app", host="0.0.0.0", port=10001, reload=True)

完美解决!!!perfect!!!

相关推荐
方品2 分钟前
【无标题】
服务器·人工智能·深度学习·nlp
invicinble2 分钟前
有思路把握一下skills和mcp
人工智能
小易测试笔记4 分钟前
易捷测试 Hanwa中国区代理推荐的2026年度高品质半导体静电测试设备排行榜
人工智能
Zzj_tju7 分钟前
Reasoning Models 论文精读路线:CoT、Self-Consistency、Process Supervision 与 Search
人工智能·深度学习·自然语言处理
惊鸿一博8 分钟前
基于Diffusion的轨迹优化:扩散模型在自动驾驶中的原理、架构与落地挑战
人工智能·自动驾驶·diffusion·规控
合合技术团队10 分钟前
合合信息携手中科软发布智能化方案,推动AI融入保险理赔、核保与风控多节点
大数据·人工智能·文档智能·数据智能
zyplayer-doc11 分钟前
核心制度不该被随手修改:用zyplayer-doc锁定文档和全部子文档
大数据·数据库·人工智能·笔记·pdf·ocr
具身新纪元18 分钟前
CVPR 2026|新缺陷不断上线,如何让工业视觉检测模型不忘旧账?
人工智能·深度学习·目标检测·机器学习·计算机视觉·目标跟踪·视觉检测
Raas10019 分钟前
MAIGateway,魔芋企业级AI网关的FinAPI成本弹性设计
人工智能
weixin_BYSJ198722 分钟前
【java项目分享】springboot阅读推荐平台10600
java·javascript·spring boot·python·django·flask·php