Flask 服务交付

3 阅读2分钟

我们在进行模型部署时,首先用户传递给我们数据,大部分情况是json格式的,例如:

{
    "content":"新闻内容"
}

然后由我们的部署的模型接收数据,并预测,最后返回一个json格式的输出。在这里,我们需要学习:

  1. json格式数据接收
  2. json格式数据返回

我们首先需要接收到json格式的数据,然后进行处理,当我们接收到数据之后,我们就给用户返回对应的json格式的输出。

在 .html 文件内,修改 form 表单的 action 属性如下:

<form action="/NewsCls_handle" method="post">
    <textarea name="content" cols="40", rows="10"></textarea>  <br />
    <input type="submit" value="提交新闻" />
</form>

在 app.py 中增加额外的业务处理函数 NewsCls_handle, 专门用来接收表单发来的邮件数据。

# 服务端Server
from flask import Flask, Response, json
from flask import request


# 初始化 Flask 应用
app = Flask(__name__)
app.config['JSON_AS_ASCII'] = False  # 解决中文乱码问题


@app.route('/NewsCls_handle', methods=['POST'])
def NewsCls_handle():
    # 获取json格式的输入
    request_json = request.get_json()
    data = request_json['content']

    # 定义响应数据格式
    respose_data = {
        'Status': 'success',
        "content": data,
    }
    # 返回请求数据
    return Response(status=200, response=json.dumps(respose_data, sort_keys=False))


if __name__ == '__main__':
    app.run()
# 客户端Client
import requests
import time

# 定义请求url和传入的data
url = "http://127.0.0.1:5000/NewsCls_handle"
data = {"content": "孙颖莎中国大满贯女单冠军"}

start_time = time.time()

# 向服务发送post请求
res = requests.post(url, json=data)
cost_time = time.time() - start_time

# 打印返回的结果
print('文本类别: ', res.text)
print('单条样本耗时: ', cost_time * 1000, 'ms')

除了使用客户端访问外,实际工作中我们一般使用Postman进行服务测试

使用Postman向 http://127.0.0.1:5000/NewsCls_handle发送请求,并返回响应结果。

请求体:

{
    "content":"新闻内容"
}

响应体:

{
    "Status": "success",
    "content": "新闻内容"
}

Postman下载地址:Download Postman | Get Started for Free

操作如下图所示:

image-20241006222706227