如何使用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操作CouchDB数据库简单示例
Mar 10 Python
python实现将内容分行输出
Nov 05 Python
Windows下Python使用Pandas模块操作Excel文件的教程
May 31 Python
django基础之数据库操作方法(详解)
May 24 Python
python获取当前文件路径以及父文件路径的方法
Jul 10 Python
在python中将list分段并保存为array类型的方法
Jul 15 Python
Django调用支付宝接口代码实例详解
Apr 04 Python
基于selenium及python实现下拉选项定位select
Jul 22 Python
详解使用Python写一个向数据库填充数据的小工具(推荐)
Sep 11 Python
简单了解Python字典copy与赋值的区别
Sep 16 Python
Pycharm编辑器功能之代码折叠效果的实现代码
Oct 15 Python
python实现一个简单的贪吃蛇游戏附代码
Jun 28 Python
教你用python控制安卓手机
Python数据分析入门之数据读取与存储
May 13 #Python
python执行js代码的方法
pytorch加载预训练模型与自己模型不匹配的解决方案
May 13 #Python
Python数据分析入门之教你怎么搭建环境
Pytorch 统计模型参数量的操作 param.numel()
May 13 #Python
Python机器学习算法之决策树算法的实现与优缺点
You might like
PHP+XML 制作简单的留言本 图文教程
2009/11/02 PHP
PHP开发需要注意的安全问题
2010/09/01 PHP
PHP 基于Yii框架中使用smarty模板的方法详解
2013/06/13 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
在UpdatePanel内jquery easyui效果失效的解决方法
2010/04/11 Javascript
开源的javascript项目Kissy介绍
2014/11/28 Javascript
JavaScript中匿名函数用法实例
2015/03/23 Javascript
jQuery实现可展开合拢的手风琴面板菜单
2015/09/15 Javascript
基于vue实现swipe轮播组件实例代码
2017/05/24 Javascript
angular 用拦截器统一处理http请求和响应的方法
2017/06/08 Javascript
CSS3+JavaScript实现翻页幻灯片效果
2017/06/28 Javascript
Three.js利用orbit controls插件(轨道控制)控制模型交互动作详解
2017/09/25 Javascript
详解vue填坑之解决部分浏览器不支持pushState方法
2018/07/12 Javascript
vue如何限制只能输入正负数及小数
2019/07/04 Javascript
vue实现页面内容禁止选中功能,仅输入框和文本域可选
2019/11/09 Javascript
vue多个元素的样式选择器问题
2019/11/29 Javascript
小程序如何写动态标签的实现方法
2020/02/05 Javascript
微信小程序实现自定义底部导航
2020/11/18 Javascript
详解Python的Django框架中的中间件
2015/07/24 Python
python 字典有序并写入json文件过程解析
2019/09/30 Python
PYTHON如何读取和写入EXCEL里面的数据
2019/10/28 Python
python字符串的拼接方法总结
2019/11/18 Python
Python reduce函数作用及实例解析
2020/05/08 Python
Python小白不正确的使用类变量实例
2020/05/29 Python
Django如何继承AbstractUser扩展字段
2020/11/27 Python
美国知名的百货清仓店:Neiman Marcus Last Call
2016/08/03 全球购物
Staples英国官方网站:办公用品一站式采购
2017/10/06 全球购物
澳大利亚在线购买儿童玩具:Toy Universe
2017/12/28 全球购物
安全生产网格化管理实施方案
2014/03/01 职场文书
乡镇党委书记第三阶段个人整改措施
2014/09/16 职场文书
仙境之桥观后感
2015/06/16 职场文书
关于环保的宣传稿
2015/07/23 职场文书
感恩教师节主题班会
2015/08/12 职场文书
CSS3 天气图标动画效果
2021/04/06 HTML / CSS
Vue Element-ui表单校验规则实现
2021/07/09 Vue.js
nginx容器方式反向代理实战
2022/04/18 Servers