如何使用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学习笔记(二)基础语法
Jun 06 Python
Python selenium 父子、兄弟、相邻节点定位方式详解
Sep 15 Python
python中virtualenvwrapper安装与使用
May 20 Python
Python发展简史 Python来历
May 14 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
Aug 09 Python
Python3常用内置方法代码实例
Nov 18 Python
如何基于python实现脚本加密
Dec 28 Python
使用pickle存储数据dump 和 load实例讲解
Dec 30 Python
Python 自由定制表格的实现示例
Mar 20 Python
python3判断IP地址的方法
Mar 04 Python
Python如何识别银行卡卡号?
Jun 10 Python
python 镜像环境搭建总结
Sep 23 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的错误信息
2006/10/09 PHP
php数组查找函数in_array()、array_search()、array_key_exists()使用实例
2014/04/29 PHP
php关闭warning问题的解决方法
2016/05/17 PHP
PHP使用redis消息队列发布微博的方法示例
2017/06/22 PHP
Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
2017/10/11 PHP
php获取微信openid方法总结
2019/10/10 PHP
JQuery AJAX实现目录浏览与编辑的代码
2008/10/21 Javascript
JS OOP包机制,类创建的方法定义
2009/11/02 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件打包下载
2010/09/15 Javascript
jQuery 回车事件enter使用示例
2014/02/18 Javascript
js代码验证手机号码和电话号码是否合法
2015/07/30 Javascript
限制文本框只能输入数字||只能是数字和小数点||只能是整数和浮点数
2016/05/27 Javascript
原生Javascript插件开发实践
2017/01/09 Javascript
认识jQuery的Promise的具体使用方法
2017/10/10 jQuery
使用Vue自定义指令实现Select组件
2018/05/24 Javascript
详解vue路由篇(动态路由、路由嵌套)
2019/01/27 Javascript
vue安装遇到的5个报错及解决方法
2019/06/12 Javascript
Vue 实现创建全局组件,并且使用Vue.use() 载入方式
2020/08/11 Javascript
全局安装 Vue cli3 和 继续使用 Vue-cli2.x操作
2020/09/08 Javascript
[01:53]2016完美“圣”典风云人物:Maybe专访
2016/12/05 DOTA
[03:48]DOTA2完美大师赛主赛事第二日精彩集锦
2017/11/24 DOTA
python sqlobject(mysql)中文乱码解决方法
2008/11/14 Python
Python中集合类型(set)学习小结
2015/01/28 Python
Python中防止sql注入的方法详解
2017/02/25 Python
基于python实现上传文件到OSS代码实例
2020/05/09 Python
css3动画 小球滚动 js控制动画暂停
2019/11/29 HTML / CSS
Application Cache未缓存文件无法访问无法加载问题
2014/05/31 HTML / CSS
萨克斯第五大道精品百货店: Saks Fifth Avenue
2017/04/28 全球购物
理肤泉俄罗斯官网:La Roche-Posay俄罗斯
2018/07/24 全球购物
交通安全教育制度
2014/02/02 职场文书
个人维稳承诺书
2015/05/04 职场文书
学校推普周活动总结
2015/05/07 职场文书
《观潮》教学反思
2016/02/17 职场文书
python全面解析接口返回数据
2022/02/12 Python
Python识别花卉种类鉴定网络热门植物并自动整理分类
2022/04/08 Python