如何使用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常见数据结构详解
Jul 24 Python
对python3新增的byte类型详解
Dec 04 Python
Python批量删除只保留最近几天table的代码实例
Apr 01 Python
Python简直是万能的,这5大主要用途你一定要知道!(推荐)
Apr 03 Python
Python中如何导入类示例详解
Apr 17 Python
Python批量修改图片分辨率的实例代码
Jul 04 Python
Tensorflow 多线程设置方式
Feb 06 Python
解决Python paramiko 模块远程执行ssh 命令 nohup 不生效的问题
Jul 14 Python
Pytest单元测试框架如何实现参数化
Sep 05 Python
Python爬取股票信息,并可视化数据的示例
Sep 26 Python
详解numpy.ndarray.reshape()函数的参数问题
Oct 13 Python
Python读取图像并显示灰度图的实现
Dec 01 Python
教你用python控制安卓手机
Python数据分析入门之数据读取与存储
May 13 #Python
python执行js代码的方法
pytorch加载预训练模型与自己模型不匹配的解决方案
May 13 #Python
Python数据分析入门之教你怎么搭建环境
Pytorch 统计模型参数量的操作 param.numel()
May 13 #Python
Python机器学习算法之决策树算法的实现与优缺点
You might like
一段php加密解密的代码
2006/10/09 PHP
php处理json时中文问题的解决方法
2011/04/12 PHP
解决file_get_contents无法请求https连接的方法
2013/12/17 PHP
朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)
2015/01/26 PHP
ThinkPHP中session函数详解
2016/09/14 PHP
PHP实现一个轻量级容器的方法
2019/01/28 PHP
关于jQuery对象数据缓存Cache原理以及jQuery.data详解
2013/04/07 Javascript
超棒的响应式布局jQuery插件Freetile.js
2014/11/17 Javascript
用js判断是否为360浏览器的实现代码
2015/01/15 Javascript
JS实现CheckBox复选框全选、不选或全不选功能
2020/07/28 Javascript
JS中sort函数排序用法实例分析
2016/06/16 Javascript
jQuery实现一个简单的轮播图
2017/02/19 Javascript
jQuery树控件zTree使用方法详解(一)
2017/02/28 Javascript
详解Vue.js搭建路由报错 router.map is not a function
2017/06/27 Javascript
bootstrap精简教程_动力节点Java学院整理
2017/07/14 Javascript
swiper Scrollbar滚动条组件详解
2019/09/08 Javascript
JS如何把字符串转换成json
2020/02/21 Javascript
vue移动端下拉刷新和上滑加载
2020/10/27 Javascript
vue print.js打印支持Echarts图表操作
2020/11/13 Javascript
Python 实现链表实例代码
2017/04/07 Python
Python中static相关知识小结
2018/01/02 Python
python中数字是否为可变类型
2020/07/08 Python
python3 kubernetes api的使用示例
2021/01/12 Python
css3 中translate和transition的使用方法
2020/03/26 HTML / CSS
LivingSocial英国:英国本地优惠
2019/02/22 全球购物
size?丹麦官网:英国伦敦的球鞋精品店
2019/04/15 全球购物
意大利在线眼镜精品店:Ottica Lipari
2019/11/11 全球购物
办公室文书岗位职责
2013/12/16 职场文书
高中军训感言500字
2014/02/24 职场文书
高三家长寄语
2014/04/03 职场文书
环保标语口号
2014/06/13 职场文书
法院授权委托书范文
2014/08/02 职场文书
酒店管理专业毕业生自我鉴定
2014/09/29 职场文书
教师廉政准则心得体会
2016/01/20 职场文书
基于flask实现五子棋小游戏
2021/05/25 Python
MySQL的InnoDB存储引擎的数据页结构详解
2022/03/03 MySQL