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

相关推荐
qq_372906933 分钟前
lang属性怎么设语言_HTML文档语言声明方法【操作】
jvm·数据库·python
Wyz201210243 分钟前
C#怎么创建控制台应用 C#如何编写Console控制台程序处理命令行参数和输入输出【入门】
jvm·数据库·python
财经资讯数据_灵砚智能5 分钟前
基于全球经济类多源新闻的NLP情感分析与数据可视化(日间)2026年4月20日
大数据·人工智能·python·信息可视化·自然语言处理
2501_914245935 分钟前
CSS如何提升CSS预处理器的编译效率_利用BEM结构优化选择器匹配
jvm·数据库·python
百杯拿铁6 分钟前
WSL+Hermes Agent 保姆级教程:让你的大模型真正“动手干活”,我踩了12个坑才总结出这篇
人工智能
田井中律.7 分钟前
知识图谱(BILSTM_CRF项目完整实现)【第七章】
人工智能·知识图谱
不瘦80斤不改名7 分钟前
深入理解 FastAPI 核心架构:依赖注入、分页机制与数据流转的底层逻辑
python·架构·fastapi
陈广亮8 分钟前
Claude Code 两个你可能没用过的环境变量:EFFORT_LEVEL 和 ADDITIONAL_DIRECTORIES_CLAUDE_MD
人工智能
GISer_Jing8 分钟前
微软AI战略全景:从基础设施到智能体生态
前端·人工智能·microsoft
qq_330037999 分钟前
C#怎么解析XML文件 C#如何用XmlDocument和LINQ to XML读写XML数据【基础】
jvm·数据库·python