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

相关推荐
Hgfdsaqwr1 分钟前
Python在2024年的主要趋势与发展方向
jvm·数据库·python
YMWM_2 分钟前
深度学习中模型的推理和训练
人工智能·深度学习
中二病码农不会遇见C++学姐17 分钟前
文明6-mod制作-游戏素材AI生成记录
人工智能·游戏
一晌小贪欢27 分钟前
Python 测试利器:使用 pytest 高效编写和管理单元测试
python·单元测试·pytest·python3·python测试
小文数模27 分钟前
2026年美赛数学建模C题完整参考论文(含模型和代码)
python·数学建模·matlab
九尾狐ai33 分钟前
从九尾狐AI案例拆解企业AI培训的技术实现与降本增效架构
人工智能
2501_9481201534 分钟前
基于RFID技术的固定资产管理软件系统的设计与开发
人工智能·区块链
Halo_tjn35 分钟前
基于封装的专项 知识点
java·前端·python·算法
(; ̄ェ ̄)。39 分钟前
机器学习入门(十五)集成学习,Bagging,Boosting,Voting,Stacking,随机森林,Adaboost
人工智能·机器学习·集成学习
杀生丸学AI41 分钟前
【物理重建】PPISP :辐射场重建中光度变化的物理合理补偿与控制
人工智能·大模型·aigc·三维重建·世界模型·逆渲染