如何使用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 相关文章推荐
python3批量删除豆瓣分组下的好友的实现代码
Jun 07 Python
TensorFlow深度学习之卷积神经网络CNN
Mar 09 Python
python读取中文txt文本的方法
Apr 12 Python
Python爬取个人微信朋友信息操作示例
Aug 03 Python
python对列进行平移变换的方法(shift)
Jan 10 Python
Django框架序列化与反序列化操作详解
Nov 01 Python
python 实现简单的FTP程序
Dec 27 Python
python数据分析:关键字提取方式
Feb 24 Python
Python实现从N个数中找到最大的K个数
Apr 02 Python
Django怎么在admin后台注册数据库表
Nov 14 Python
Python爬虫基础初探selenium
May 31 Python
分享python函数常见关键字
Apr 26 Python
教你用python控制安卓手机
Python数据分析入门之数据读取与存储
May 13 #Python
python执行js代码的方法
pytorch加载预训练模型与自己模型不匹配的解决方案
May 13 #Python
Python数据分析入门之教你怎么搭建环境
Pytorch 统计模型参数量的操作 param.numel()
May 13 #Python
Python机器学习算法之决策树算法的实现与优缺点
You might like
PHP VS ASP
2006/10/09 PHP
thinkphp自定义权限管理之名称判断方法
2017/04/01 PHP
javascript parseInt() 函数的进制转换注意细节
2013/01/08 Javascript
jQuery Animation实现CSS3动画示例介绍
2013/08/14 Javascript
js+div实现图片滚动效果代码
2014/02/10 Javascript
javascript判断并获取注册表中可信任站点的方法
2015/06/01 Javascript
详解JavaScript逻辑And运算符
2015/12/04 Javascript
AngularJS基础 ng-model 指令详解及示例代码
2016/08/02 Javascript
JavaScript-html标题滚动效果的简单实现
2016/09/08 Javascript
浅谈jQuery hover(over, out)事件函数
2016/12/03 Javascript
利用js定义一个导航条菜单
2017/03/14 Javascript
vue2.0 与 bootstrap datetimepicker的结合使用实例
2017/05/22 Javascript
原生JS实现的碰撞检测功能示例
2018/05/18 Javascript
解决Vue项目打包后打开index.html页面显示空白以及图片路径错误的问题
2019/10/25 Javascript
axios解决高并发的方法:axios.all()与axios.spread()的操作
2020/11/09 Javascript
Vue实现图书管理小案例
2020/12/03 Vue.js
简化Python的Django框架代码的一些示例
2015/04/20 Python
Python selenium如何设置等待时间
2016/09/15 Python
python编程羊车门问题代码示例
2017/10/25 Python
Python3之文件读写操作的实例讲解
2018/01/23 Python
numpy.ndarray 交换多维数组(矩阵)的行/列方法
2018/08/02 Python
python实现简单加密解密机制
2019/03/19 Python
python Qt5实现窗体跟踪鼠标移动
2019/12/13 Python
音频处理 windows10下python三方库librosa安装教程
2020/06/20 Python
friso美素佳儿官方海外旗舰店:荷兰原产原罐
2017/07/03 全球购物
菲律宾酒店预订网站:Hotels.com菲律宾
2017/07/12 全球购物
英国历史最悠久的DJ设备供应商:DJ Finance、DJ Warehouse、The DJ Shop
2019/09/04 全球购物
美体小铺法国官方网站:The Body Shop法国
2020/06/04 全球购物
信息学院毕业生自荐信范文
2014/03/04 职场文书
微笑面对生活演讲稿
2014/05/13 职场文书
解放思想大讨论活动总结
2015/05/09 职场文书
企业党建工作总结2015
2015/05/26 职场文书
幽默导游词开场白
2015/05/29 职场文书
大国崛起观后感
2015/06/02 职场文书
个人业务学习心得体会
2016/01/25 职场文书
Golang实现AES对称加密的过程详解
2021/05/20 Golang