我想在本地部署一个超级简单的基本应用程序,它使用我之前拟合的ML模型来预测我的测试数据集中的数据.以下是FastAPI模块的格式:

from fastapi import FastAPI
import pickle
import numpy as np
# import pandas as pd
import json
from typing import *

app = FastAPI()
    
def predict(data: List[float]):
    with open("model.pkl", "rb") as f:
        model = pickle.load(f)
    data = np.array(data).reshape(1, -1)
    prediction = model.predict(data)
    return prediction

@app.post("/predict")
def predict_route(data: List[float]):
    prediction = predict(data)
    return {"prediction": prediction}

import requests

f = open('test_data.json',) 
data = json.load(f) 

response = requests.post("http://localhost:8000/predict", json=data)
print(response.json())

当我try 使用以下工具使其工作时,问题就出现了

uvicorn main:app --reload

我从cmd获得以下代码:

requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=8000): Max retries exceeded with url: /predict (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000002080F90E870>: Failed to establish a new connection: [WinError 10061] No connection could be made because the target machine actively refused it'))

有人能帮助我实现这一点吗?

推荐答案

由于您的请求位于同一文件中,因此当您运行您的应用程序时,它会转到此行

response = requests.post("http://localhost:8000/predict", json=data)

在服务器启动之前,导致您的错误.从您的服务器代码中删除这些行并单独运行它们(通过一个HTTP客户端,如Postman或cURL,或者一个单独的python文件/测试),它很可能会工作.

Python相关问答推荐

使用plotnine和Python构建地块

大Pandas 胚胎中产生组合

比较两个数据帧并并排附加结果(获取性能警告)

rame中不兼容的d类型

Pytest两个具有无限循环和await命令的Deliverc函数

使用groupby Pandas的一些操作

OR—Tools CP SAT条件约束

如何并行化/加速并行numba代码?

什么是合并两个embrame的最佳方法,其中一个有日期范围,另一个有日期没有任何共享列?

Django admin Csrf令牌未设置

解决调用嵌入式函数的XSLT中表达式的语法移位/归约冲突

搜索按钮不工作,Python tkinter

如何在海上配对图中使某些标记周围的黑色边框

如何强制向量中的特定元素在Gekko中处于优化解决方案中

什么是一种快速而优雅的方式来转换一个包含一串重复的列,而不对同一个值多次运行转换,

Regex用于匹配Python中逗号分隔的AWS区域

启动线程时,Python键盘模块冻结/不工作

从列表中分离数据的最佳方式

极点用特定值替换前n行

合并Pandas中的数据帧,但处理不存在的列