如何使用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的身份证号码自动生成程序
Aug 15 Python
Python增量循环删除MySQL表数据的方法
Sep 23 Python
python实现发送邮件及附件功能
Mar 02 Python
解决python matplotlib imshow无法显示的问题
May 24 Python
Django中Middleware中的函数详解
Jul 18 Python
python 实现保存最新的三份文件,其余的都删掉
Dec 22 Python
python 实现多维数组(array)排序
Feb 28 Python
Alpine安装Python3依赖出现的问题及解决方法
Dec 25 Python
Python3爬虫ChromeDriver的安装实例
Feb 06 Python
Pytorch 中的optimizer使用说明
Mar 03 Python
PyTorch dropout设置训练和测试模式的实现
May 27 Python
Python 第三方库 openpyxl 的安装过程
Dec 24 Python
教你用python控制安卓手机
Python数据分析入门之数据读取与存储
May 13 #Python
python执行js代码的方法
pytorch加载预训练模型与自己模型不匹配的解决方案
May 13 #Python
Python数据分析入门之教你怎么搭建环境
Pytorch 统计模型参数量的操作 param.numel()
May 13 #Python
Python机器学习算法之决策树算法的实现与优缺点
You might like
vBulletin HACK----显示话题大小和打开新窗口于论坛索引页
2006/10/09 PHP
php图片缩放实现方法
2014/02/20 PHP
php自定义函数转换html标签示例
2016/09/29 PHP
JS中confirm,alert,prompt函数使用区别分析
2010/04/01 Javascript
fancybox1.3.1 基于Jquery的插件在IE中图片显示问题
2010/10/01 Javascript
Google 静态地图API实现代码
2010/11/19 Javascript
简单实用的js调试logger组件实现代码
2010/11/20 Javascript
用js实现控件的隐藏及style.visibility的使用
2013/06/14 Javascript
jQuery老黄历完整实现方法
2015/01/16 Javascript
jquery事件的ready()方法使用详解
2015/11/11 Javascript
基于JS如何实现类似QQ好友头像hover时显示资料卡的效果(推荐)
2016/06/09 Javascript
AngularJS ng-style中使用filter
2016/09/21 Javascript
javascript基础知识讲解
2017/01/11 Javascript
详解Vue 非父子组件通信方法(非Vuex)
2017/05/24 Javascript
AngularJS基于http请求实现下载php生成的excel文件功能示例
2018/01/23 Javascript
微信小程序生成海报分享朋友圈的实现方法
2019/05/06 Javascript
微信小程序在线客服自动回复功能(基于node)
2019/07/03 Javascript
node后端服务保活的实现
2019/11/10 Javascript
JS常用正则表达式超全集(密码强度校验,金额校验,IE版本,IPv4,IPv6校验)
2020/02/03 Javascript
vue路由的配置和页面切换详解
2020/09/09 Javascript
Python中的defaultdict模块和namedtuple模块的简单入门指南
2015/04/01 Python
Python psutil模块简单使用实例
2015/04/28 Python
Python数据可视化编程通过Matplotlib创建散点图代码示例
2017/12/09 Python
pandas Dataframe行列读取的实例
2018/06/08 Python
html5实现的便签特效(实战分享)
2013/11/29 HTML / CSS
PatPat德国:妈妈的每日优惠
2019/10/02 全球购物
为什么如下的代码int a=100,b=100;long int c=a * b;不能工作
2013/11/29 面试题
管理失职检讨书
2014/02/12 职场文书
信息专业学生学习的自我评价
2014/02/17 职场文书
《地震中的父与子》教学反思
2014/04/10 职场文书
业务员工作态度散漫检讨书
2014/11/02 职场文书
高中生毕业评语
2014/12/30 职场文书
维稳承诺书
2015/01/20 职场文书
2015年综治宣传月活动总结
2015/03/25 职场文书
运动会班级口号霸气押韵
2015/12/24 职场文书
vue实现无缝轮播效果(跑马灯)
2021/05/14 Vue.js