使用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!!!

相关推荐
weixin_470729981 分钟前
匹配一个文件夹下的所有excel——python
开发语言·python·excel
数字化转型202514 分钟前
从数字化角度来看, 出海制造型企业项目的数字化经验总结
人工智能·sap
大G哥17 分钟前
Python实现应用决策树的实例程序
开发语言·python·算法·决策树·机器学习
铮铭19 分钟前
DINOv2+Qwen2.5-VL-2B+LoRA实现image caption的微调
python·深度学习·机器学习·具身智能·vla
li三河19 分钟前
一、金融知识储备
人工智能·金融·区块链
夜幕龙21 分钟前
Dexcap复现代码数据预处理全流程(一)——replay_human_traj_vis.py
人工智能·python·机器人
♢.*21 分钟前
微软 2024 最新技术全景洞察
人工智能·microsoft
加百力23 分钟前
微软发布2025年AI预测:AI Agents将彻底改变工作方式
人工智能·microsoft·机器学习
minstbe1 小时前
半导体数据分析: 玩转WM-811K Wafermap 数据集(二) AI 机器学习
人工智能·机器学习
知识中的海王1 小时前
【已解决】Django连接mysql报错Did you install mysqlclient?
python·mysql·django