如何使用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之玩转字符串(1)
Sep 14 Python
提升Python程序运行效率的6个方法
Mar 31 Python
python实现的希尔排序算法实例
Jul 01 Python
Python中多个数组行合并及列合并的方法总结
Apr 12 Python
详解Django 中是否使用时区的区别
Jun 14 Python
Django CSRF认证的几种解决方案
Mar 03 Python
使用Python第三方库pygame写个贪吃蛇小游戏
Mar 06 Python
Pytorch转onnx、torchscript方式
May 25 Python
Python中过滤字符串列表的方法
Dec 22 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
Dec 24 Python
Python中的 Set 与 dict
Mar 13 Python
Python matplotlib安装以及实现简单曲线的绘制
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
Zend的MVC机制使用分析(一)
2013/05/02 PHP
基于Linux调试工具strace与gdb的常用命令总结
2013/06/03 PHP
PHP在线生成二维码代码(google api)
2013/06/03 PHP
Symfony2使用Doctrine进行数据库查询方法实例总结
2016/03/18 PHP
针对多用户实现头像上传功能PHP代码 适用于登陆页面制作
2016/08/17 PHP
PHP保留两位小数的几种方法
2019/07/24 PHP
javascript 动态数据下的锚点错位问题解决方法
2008/12/24 Javascript
jquery插件制作 提示框插件实现代码
2012/08/17 Javascript
JS禁用浏览器退格键实现思路及代码
2013/10/29 Javascript
js库Modernizr的介绍和使用
2015/05/07 Javascript
如何解决谷歌浏览器下jquery无法获取图片的尺寸
2015/09/10 Javascript
Javascript 闭包详解及实例代码
2016/11/30 Javascript
详解nodejs 文本操作模块-fs模块(五)
2016/12/23 NodeJs
Bootstrap table表格简单操作
2017/02/07 Javascript
JavaScript的for循环中嵌套一个点击事件的问题解决
2017/03/03 Javascript
Node.js 使用jade模板引擎的示例
2018/05/11 Javascript
vue组件开发props验证的实现
2019/02/12 Javascript
JavaScript eval()函数定义及使用方法详解
2020/07/07 Javascript
[03:24]CDEC.Y赛前采访 努力备战2016国际邀请赛中国区预选赛
2016/06/25 DOTA
python通过自定义isnumber函数判断字符串是否为数字的方法
2015/04/23 Python
Python实现网络端口转发和重定向的方法
2016/09/19 Python
python机器学习理论与实战(一)K近邻法
2021/01/28 Python
一个可以套路别人的python小程序实例代码
2019/04/09 Python
HTML5新表单元素_动力节点Java学院整理
2017/07/12 HTML / CSS
国际旅客访问北美最大的汽车租赁提供商:Alamo Rent A Car
2018/06/13 全球购物
Derek Rose官网:英国高档睡衣、家居服和内衣品牌
2020/01/18 全球购物
银行会计业务的个人自我评价
2013/11/02 职场文书
应届毕业生求职信范例分享
2013/12/17 职场文书
档案接收函
2014/01/13 职场文书
2014个人四风对照检查材料思想汇报
2014/09/18 职场文书
教师党员批评与自我批评
2014/10/15 职场文书
有限公司股东合作协议书
2014/10/29 职场文书
专家推荐信怎么写
2015/03/25 职场文书
何玥事迹观后感
2015/06/16 职场文书
php TP5框架生成二维码链接
2021/04/01 PHP
mysql sock文件存储了什么信息
2022/07/15 MySQL