【问题标题】:Extract a list from the request body sent to FastAPI application从发送到 FastAPI 应用程序的请求正文中提取列表
【发布时间】:2020-08-05 09:26:10
【问题描述】:

我有一个 FastAPI 应用程序,它根据发送给它的 HTTP POST 数据进行预测。代码如下

import tensorflow as tf
from typing import List
from fastapi import FastAPI, Response
from pydantic import BaseModel

class ItemList(BaseModel):
    instances: List[List[float]]

app = FastAPI()

model = tf.keras.models.load_model('trainedmodel/1')

@app.post('/v1/models/my_model:predict')
def predict(inputdata: ItemList):
    # Extract [[1.5,1.65,2,0.5,-2,1.5,0.1,2,0.2]]
    result = {
                 "predictions": [
                         model.predict(modelInput).flatten().tolist()
                 ]
    }
    return result

对应用的请求类型为application/json,请求正文包含{"instances":[[1.5,1.65,2,0.5,-2,1.5,0.1,2,0.2]]}

我需要从请求正文中提取[[1.5,1.65,2,0.5,-2,1.5,0.1,2,0.2]],以便将其输入到模型中(如上述代码中的modelInput)。在 Flask 中,我使用了request.json['instances'] 这样做。有人可以告诉我如何在 FastAPI 中做同样的事情吗?

【问题讨论】:

  • 只是inputdata.instances
  • 谢谢@AlexNoname!有效。我记得早些时候尝试过,但失败了。可能是因为我在其他地方出错了。您可以将此添加为答案,以便我接受它作为最佳答案吗?

标签: python fastapi pydantic


【解决方案1】:

要访问请求正文,您只需使用inputdata.instances

class ItemList(BaseModel):
    instances: List[List[float]]

@app.post('/v1/models/my_model:predict')
def predict(inputdata: ItemList):
    # Extract [[1.5,1.65,2,0.5,-2,1.5,0.1,2,0.2]]
    extracted_list = inputdata.instances

【讨论】:

  • 嗨!我正在尝试做同样的事情,但我有一个问题。我想预测一个项目列表,但我不知道如何将项目列表发送到 requests.post 函数,因为它显然只接受 json。我对整个部署模型的事情真的很陌生,所以任何帮助都非常感谢!
  • @Tata​​ 你能解决你的问题吗?我正在经历同样的事情。
猜你喜欢
  • 2021-02-07
  • 2016-03-12
  • 2021-10-09
  • 2020-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多