使用FastAPI和Docker构建机器学习API

作者:佚名 上传时间:2023-05-25 运行软件:Python 软件版本:FastAPI v0.64.0 版权申诉

这个示例代码展示了如何使用FastAPI和Docker构建一个机器学习API。它通过Swagger UI进行API文档化,可以轻松地在代码中添加新的端点和模型。Docker容器化应用程序以便于部署到云上或者本地环境中。

#导入fastapi、docker、pydantic、os等库
from fastapi import FastAPI
from pydantic import BaseModel
import docker
import os

# 定义请求数据模型类
class InputShape(BaseModel):
    序列1: list
    序列2: list


# 创建FastAPI应用
app = FastAPI()

# 加载机器学习模型
client = docker.from_env()
model = client.containers.run(
    "ml-model",  # Docker映像名称
    detach=True,  # 在后台运行
    ports={'8000/tcp': 8000},  # 映射Docker端口
)

# 定义路由函数
@app.post("/predict")
def predict(input_shape: InputShape):
    """
    预测给定序列对应输出
    """
    # 构造请求
    data = {"inputs": [input_shape.dict()]}

    # 发送请求到Docker容器上的模型
    response = client.containers.get(model.id).exec_run(
        "python -m predict",
        environment=["PYTHONUNBUFFERED=1"],
        stdin=json.dumps(data).encode("utf-8"),
    )

    # 返回预测结果
    return {"outputs": json.loads(response.output.decode("utf-8"))[0][0]}


# 关闭Docker容器
@app.on_event("shutdown")
def shutdown_event():
    """
    关闭Docker容器
    """
    client.containers.get(model.id).kill()

# 运行应用程序
if __name__ == "__main__":
    uvicorn.run(
        "app:app",
        host="0.0.0.0",
        port=int(os.environ.get("PORT", 8000)),
        workers=1,
        use_colors=True,
    )

免责申明:文章和图片全部来源于公开网络,如有侵权,请通知删除 server@dude6.com

用户评论
相关推荐
使FastAPIDockerAPI
这个示例代码展示了如何使用FastAPI和Docker构建一个机器学习API。它通过Swagger UI进行API文档化,可以轻松地在代码中添加新的端点和模型。Docker容器化应用程序以便于部署到云
FastAPI v0.64.0
Python
2023-05-25 23:17
使FastAPIScikit-learnAPI
使用FastAPI和Scikit-learn库创建机器学习API的示例。该API将根据用户提供的数据返回预测结果。使用了FastAPI的便捷性和Scikit-learn的高性能机器学习算法。impo
FastAPI 0.63.0, Scikit-learn 0.23.2
Python 3.8
2023-04-15 08:56
使FastAPIPydantic的REST API
本示例代码展示了如何使用FastAPI和Pydantic构建一个用于机器学习的REST API,主要涉及到POST请求的处理和数据校验。```pythonfrom fastapi import F
FastAPI 0.55.1, Pydantic 1.8.2, Python 3.9.1
Python
2023-03-20 15:31
使FastAPI、UvicornDockerREST API
本示例展示如何使用FastAPI、Uvicorn和Docker构建REST API,以获取并展示一个硬编码的消息。from fastapi import FastAPIapp = FastAPI
FastAPI 0.63.0、Uvicorn 0.14.0、Docker 20.10.6
Python 3.9.2
2023-05-27 12:48
使FastAPIDocker部署模型
本示例展示如何使用FastAPI和Docker将机器学习模型部署到生产环境中,并通过HTTP API提供服务。首先,加载机器学习模型并使用FastAPI创建API endpoints。然后,使用Doc
Python 3.8.6, FastAPI 0.65.1
Visual Studio Code
2023-04-18 15:10
使Docker模型
在机器学习模型构建过程中,经常会遇到环境配置问题,不同的机器学习框架和库之间的版本不兼容等问题,为了解决这些问题,可以使用 Docker。Docker 简介Docker是一个开源的容器化平台,可以
Docker 18.09+
Python、R
2023-04-03 14:46
使FastAPIDockerRESTful API
本示例代码展示了如何使用FastAPI和Docker构建一个基本RESTful API并进行部署。FastAPI具有极快的性能和易于使用的API文档自动生成功能,Docker则提供了便捷的容器化部署解
FastAPI 0.63.0, Docker 20.10.5
Python, Docker
2023-04-21 21:25
使FastAPIPydanticAPI
本示例演示了如何使用FastAPI和Pydantic构建具有数据验证和类型提示的API。from fastapi import FastAPIfrom pydantic import BaseMo
FastAPI v0.66.0, Pydantic v1.8.2
Python 3.9.2
2023-03-30 18:50
使FastAPIMongoDBAPI
本篇示例代码展示了如何使用FastAPI框架和MongoDB数据库构建API。示例中展示了数据模型定义、CRUD操作以及API路由的定义和实现方式。from fastapi import FastA
FastAPI 0.68.0, pymongo 3.12.0
Python 3.8.10
2023-03-31 14:46
python microservice fastapi学习使用PythonFastAPI构建自己的微服务源码
python-microservice-fastapi 学习使用Python和FastAPI构建自己的微服务 如何运行? 确保已安装docker和docker-compose 运行docker-com
ZIP
10KB
2021-02-18 20:51