如何使用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
(2)运行test_request.py
并在起服务的位置看到:
来源: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