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


Posted in Python onMay 13, 2021

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将模型部署为服务

以上就是如何使用flask将模型部署为服务的详细内容,更多关于用flask将模型部署为服务的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
详解Python中dict与set的使用
Aug 10 Python
浅谈python 线程池threadpool之实现
Nov 17 Python
Python3计算三角形的面积代码
Dec 18 Python
分析python切片原理和方法
Dec 19 Python
python+opencv实现动态物体追踪
Jan 09 Python
django表单的Widgets使用详解
Jul 22 Python
使用virtualenv创建Python环境及PyQT5环境配置的方法
Sep 10 Python
Python2与Python3的区别点整理
Dec 12 Python
python如何通过twisted搭建socket服务
Feb 03 Python
基于python3的socket聊天编程
Feb 17 Python
python如何实现递归转非递归
Feb 25 Python
基于Python和openCV实现图像的全景拼接详细步骤
Oct 05 Python
教你用python控制安卓手机
Python数据分析入门之数据读取与存储
May 13 #Python
python执行js代码的方法
pytorch加载预训练模型与自己模型不匹配的解决方案
May 13 #Python
Python数据分析入门之教你怎么搭建环境
Pytorch 统计模型参数量的操作 param.numel()
May 13 #Python
Python机器学习算法之决策树算法的实现与优缺点
You might like
SMARTY学习手记
2007/01/04 PHP
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
2014/06/26 PHP
PHP简单实现二维数组赋值与遍历功能示例
2017/10/19 PHP
Yii2.0实现的批量更新及批量插入功能示例
2019/01/29 PHP
javascript 点击整页变灰的效果(可做退出效果)。
2008/01/09 Javascript
基于Jquery的动态添加控件并取值的实现代码
2010/09/24 Javascript
window.ActiveXObject使用说明
2010/11/08 Javascript
JS返回上一页实例代码通过图片和按钮分别实现
2013/08/16 Javascript
深入解析JavaScript中的立即执行函数
2016/05/21 Javascript
AngularJS实践之使用NgModelController进行数据绑定
2016/10/08 Javascript
Bootstrap基本插件学习笔记之模态对话框(16)
2016/12/08 Javascript
react native仿微信PopupWindow效果的实例代码
2017/08/07 Javascript
微信小程序项目实践之九宫格实现及item跳转功能
2018/07/19 Javascript
Django集成百度富文本编辑器uEditor攻略
2014/07/04 Python
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
2017/06/12 Python
Python使用matplotlib简单绘图示例
2018/02/01 Python
Python中asyncio与aiohttp入门教程
2018/10/16 Python
浅谈Pycharm中的Python Console与Terminal
2019/01/17 Python
django2笔记之路由path语法的实现
2019/07/17 Python
django日志默认打印request请求信息的方法示例
2020/05/17 Python
使用html5 canvas创建太空游戏的示例
2014/05/08 HTML / CSS
MADE荷兰:提供原创设计师家具
2018/04/03 全球购物
捷克厨房用品购物网站:Tescoma
2018/07/13 全球购物
eBay意大利购物网站:eBay.it
2019/09/04 全球购物
美国电子产品购物网站:BuyDig.com
2020/06/17 全球购物
主持人演讲稿范文
2013/12/28 职场文书
幼儿园春游活动方案
2014/01/19 职场文书
小学防溺水制度
2014/01/29 职场文书
语文高效课堂实施方案
2014/05/03 职场文书
学校食品安全实施方案
2014/06/14 职场文书
爱护公共设施标语
2014/06/24 职场文书
大学生创业事迹材料
2014/12/30 职场文书
仓管员岗位职责范本
2015/04/01 职场文书
小学生安全教育主题班会
2015/08/12 职场文书
MySQL 重写查询语句的三种策略
2021/05/10 MySQL
关于JavaScript轮播图的实现
2021/11/20 Javascript