如何使用flask将模型部署为服务

作者:yxs 时间:2021-11-11 06:02:48 

目录
  • 1. 加载保存好的模型

  • 2. 使用flask起服务

  • 3. 发送请求并得到结果

  • 4. 效果呈现

1. 加载保存好的模型

为了方便起见,这里我们就使用简单的分词模型,相关代码如下:model.py


import jieba

class JiebaModel:
   def load_model(self):
       self.jieba_model = jieba.lcut

def generate_result(self, text):
       return self.jieba_model(text, cut_all=False)

说明:在load_model方法中加载保存好的模型,无论是sklearn、tensorflow还是pytorch的都可以在里面完成。在generate_result方法中定义处理输入后得到输出的逻辑,并返回结果。

2. 使用flask起服务

代码如下:test_flask.py


# -*-coding:utf-8-*-
from flask import Flask, request, Response, abort
from flask_cors import CORS
# from ast import literal_eval
import time
import sys
import json
import traceback

from model import JiebaModel

app = Flask(__name__)
CORS(app) # 允许所有路由上所有域使用CORS

@app.route("/", methods=['POST', 'GET'])
def inedx():
   return '分词程序正在运行中'

@app.route("/split_words", methods=['POST', 'GET'])
def get_result():
   if request.method == 'POST':
       text = request.data.decode("utf-8")
   else:
       text = request.args['text']

try:
       start = time.time()
       print("用户输入",text)
       res = jiebaModel.generate_result(text)
       end = time.time()
       print('分词耗时:', end-start)
       print('分词结果:', res)
       result = {'code':'200','msg':'响应成功','data':res}
   except Exception as e:
       print(e)
       result_error = {'errcode': -1}
       result = json.dumps(result_error, indent=4, ensure_ascii=False)
       # 这里用于捕获更详细的异常信息
       exc_type, exc_value, exc_traceback = sys.exc_info()
       lines = traceback.format_exception(exc_type, exc_value, exc_traceback)
       # 提前退出请求
       abort(Response("Failed!\n" + '\n\r\n'.join('' + line for line in lines)))
   return Response(str(result), mimetype='application/json')

if __name__ == "__main__":
   jiebaModel = JiebaModel()
   jiebaModel.load_model()
   app.run(host='0.0.0.0', port=1314, threaded=False)

说明:我们定义了一个get_result()函数,对应的请求是ip:port/split_words。 首先我们根据请求是get请求还是post请求获取数据,然后使用模型根据输入数据得到输出结果,并返回响应给请求。如果遇到异常,则进行相应的处理后并返回。在__main__中,我们引入了model.py的JiebaModel类,然后加载了模型,并在get_result()中调用。

3. 发送请求并得到结果

代码如下:test_request.py


import requests

def get_split_word_result(text):
   res = requests.post('http://{}:{}/split_words'.format('本机ip', 1314), data=str(text).encode('utf-8'))
   print(res.text)

get_split_word_result("我爱北京天安门")

说明:通过requests发送post请求,请求数据编码成utf-8的格式,最后得到响应,并利用.text得到结果。

4. 效果呈现

(1)运行test_flask.py

如何使用flask将模型部署为服务

(2)运行test_request.py

如何使用flask将模型部署为服务

并在起服务的位置看到:

如何使用flask将模型部署为服务

来源:https://www.cnblogs.com/xiximayou/p/14763635.html

标签:flask,模型,部署服务
0
投稿

猜你喜欢

  • python特性语法之遍历、公共方法、引用

    2023-05-17 16:21:29
  • 如何利用Python将html转为pdf、word文件

    2022-07-27 10:36:55
  • Pytorch中的广播机制详解(Broadcast)

    2022-11-17 05:22:51
  • Python 3.x基础实战检查磁盘可用空间

    2021-05-11 09:21:25
  • oracle 集合

    2009-06-19 18:09:00
  • jenkins自动构建发布vue项目的方法步骤

    2024-04-30 10:47:14
  • python脚本实现验证码识别

    2022-02-03 09:41:30
  • js为什么[]==![]是成立的吗

    2024-04-10 16:10:34
  • php 多继承的几种常见实现方法示例

    2023-11-22 19:03:19
  • Python中用字符串调用函数或方法示例代码

    2023-03-05 15:37:59
  • JavaScript中函数声明与函数表达式的区别详解

    2024-04-19 10:02:34
  • 学习ASP.NET八天入门:第一天

    2007-08-07 13:08:00
  • 利用matlab与Excel交互之单元格操作

    2022-12-04 15:06:54
  • 简单的网站页面有什么好处

    2007-11-15 06:28:00
  • T-SQL篇如何防止SQL注入的解决方法

    2024-01-23 16:51:06
  • vue-router命名路由和编程式路由传参讲解

    2024-05-02 17:03:39
  • python循环控制之break和continue流程控制语句

    2021-02-05 15:22:29
  • vux-scroller实现移动端上拉加载功能过程解析

    2024-05-09 10:42:21
  • python 接口测试response返回数据对比的方法

    2023-10-12 14:01:31
  • MySQL如何设置某个字段的值自增

    2024-01-27 09:49:09
  • asp之家 网络编程 m.aspxhome.com