如何使用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自动化部署工具Fabric的简单上手指南
Apr 19 Python
浅谈Python peewee 使用经验
Oct 20 Python
Python中使用支持向量机SVM实践
Dec 27 Python
pygame实现雷电游戏雏形开发
Nov 20 Python
pandas如何处理缺失值
Jul 31 Python
Django命名URL和反向解析URL实现解析
Aug 09 Python
Python自定义聚合函数merge与transform区别详解
May 26 Python
python代码区分大小写吗
Jun 17 Python
python 基于卡方值分箱算法的实现示例
Jul 17 Python
python PyAUtoGUI库实现自动化控制鼠标键盘
Sep 09 Python
Python基础进阶之海量表情包多线程爬虫功能的实现
Dec 17 Python
详解Python遍历列表时删除元素的正确做法
Jan 07 Python
教你用python控制安卓手机
Python数据分析入门之数据读取与存储
May 13 #Python
python执行js代码的方法
pytorch加载预训练模型与自己模型不匹配的解决方案
May 13 #Python
Python数据分析入门之教你怎么搭建环境
Pytorch 统计模型参数量的操作 param.numel()
May 13 #Python
Python机器学习算法之决策树算法的实现与优缺点
You might like
php递归列出所有文件和目录的代码
2008/09/10 PHP
IIS7.X配置PHP运行环境小结
2011/06/09 PHP
浅谈php中的循环while、do...while、for、foreach四种循环
2016/11/05 PHP
PHP获取访问设备信息的方法示例
2019/02/20 PHP
Javascript & DHTML 实例编程(教程)(三)初级实例篇1—上传文件控件实例
2007/06/02 Javascript
Javascript笔记一 js以及json基础使用说明
2010/05/22 Javascript
js实现快速分享功能(你的文章分享工具)
2013/06/25 Javascript
JavaScript回调(callback)函数概念自我理解及示例
2013/07/04 Javascript
探讨jQuery的ajax使用场景(c#)
2013/12/03 Javascript
js兼容火狐显示上传图片预览效果的方法
2015/05/21 Javascript
jQuery实用技巧必备(中)
2015/11/03 Javascript
学习JavaScript设计模式(多态)
2015/11/25 Javascript
JS组件Bootstrap Select2使用方法解析
2016/05/30 Javascript
详解Vue使用 vue-cli 搭建项目
2017/04/20 Javascript
js-FCC算法-No repeats please字符串的全排列(详解)
2017/05/02 Javascript
BootStrap的双日历时间控件使用
2017/07/25 Javascript
Redux 和 Mobx的选择问题:让你不再困惑!
2017/09/18 Javascript
VUEJS 2.0 子组件访问/调用父组件的实例
2018/02/10 Javascript
Vue.js 实现微信公众号菜单编辑器功能(二)
2018/05/08 Javascript
详解vue通过NGINX部署在子目录或者二级目录实践
2018/09/03 Javascript
JS实现基本的网页计算器功能示例
2020/01/16 Javascript
浅谈Vue3.0新版API之composition-api入坑指南
2020/04/30 Javascript
Vue.js暴露方法给WebView的使用操作
2020/09/07 Javascript
微信小程序弹窗禁止页面滚动的实现代码
2020/12/30 Javascript
python中for语句简单遍历数据的方法
2015/05/07 Python
python re.sub()替换正则的匹配内容方法
2019/07/22 Python
python 直接赋值和copy的区别详解
2019/08/07 Python
Python 识别12306图片验证码物品的实现示例
2020/01/20 Python
tensorflow mnist 数据加载实现并画图效果
2020/02/05 Python
Python运行提示缺少模块问题解决方案
2020/04/02 Python
python对输出的奇数偶数排序实例代码
2020/12/04 Python
太阳镜仓库,售价20美元或更少:Sunglass Warehouse
2016/09/28 全球购物
办公室驾驶员岗位职责
2013/11/15 职场文书
音乐教学案例
2014/01/30 职场文书
正风肃纪剖析材料
2014/02/18 职场文书
本科毕业论文答辩稿
2015/06/23 职场文书