如何使用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的Tornado框架中的协程异步实现原理
Apr 23 Python
python将ansible配置转为json格式实例代码
May 15 Python
spark: RDD与DataFrame之间的相互转换方法
Jun 07 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
Feb 21 Python
基于pytorch的保存和加载模型参数的方法
Aug 17 Python
windows环境中利用celery实现简单任务队列过程解析
Nov 29 Python
Python GUI自动化实现绕过验证码登录
Jan 10 Python
浅谈Python的方法解析顺序(MRO)
Mar 05 Python
python Scrapy爬虫框架的使用
Jan 21 Python
详解Python调用系统命令的六种方法
Jan 28 Python
解决numpy数组互换两行及赋值的问题
Apr 17 Python
使用python创建股票的时间序列可视化分析
Mar 03 Python
教你用python控制安卓手机
Python数据分析入门之数据读取与存储
May 13 #Python
python执行js代码的方法
pytorch加载预训练模型与自己模型不匹配的解决方案
May 13 #Python
Python数据分析入门之教你怎么搭建环境
Pytorch 统计模型参数量的操作 param.numel()
May 13 #Python
Python机器学习算法之决策树算法的实现与优缺点
You might like
一个SQL管理员的web接口
2006/10/09 PHP
PHP教程之PHP中shell脚本的使用方法分享
2012/02/23 PHP
thinkPHP5项目中实现QQ第三方登录功能
2017/10/20 PHP
thinkPHP5实现的查询数据库并返回json数据实例
2017/10/23 PHP
Laravle eloquent 多对多模型关联实例详解
2017/11/22 PHP
php设计模式之代理模式分析【星际争霸游戏案例】
2020/03/23 PHP
innerText和innerHTML 一些问题分析
2009/05/18 Javascript
javascript读取xml实现javascript分页
2013/12/13 Javascript
JavaScript中Math对象方法使用概述
2014/01/02 Javascript
jQuery简易图片放大特效示例代码
2014/06/09 Javascript
JavaScript检查数字是否为整数或浮点数的方法
2015/06/09 Javascript
js实现三张图(文)片一起切换的banner焦点图
2015/08/25 Javascript
JS+CSS3制作炫酷的弹窗效果
2016/11/08 Javascript
Vuex 进阶之模块化组织详解
2018/01/12 Javascript
JS实现模糊查询带下拉匹配效果
2018/06/21 Javascript
详解Angular中通过$location获取地址栏的参数
2018/08/02 Javascript
webpack4 处理CSS的方法示例
2018/09/03 Javascript
vue.js中proxyTable 转发请求的实现方法
2018/09/20 Javascript
vue与原生app的对接交互的方法(混合开发)
2018/11/28 Javascript
[44:43]完美世界DOTA2联赛决赛日 FTD vs GXR 第一场 11.08
2020/11/11 DOTA
ssh批量登录并执行命令的python实现代码
2012/05/25 Python
python实现爬虫下载美女图片
2015/07/14 Python
Python基于select实现的socket服务器
2016/04/13 Python
Python异步编程之协程任务的调度操作实例分析
2020/02/01 Python
python interpolate插值实例
2020/07/06 Python
Python filter()及reduce()函数使用方法解析
2020/09/05 Python
python实现三种随机请求头方式
2021/01/05 Python
CSS Houdini实现动态波浪纹效果
2019/07/30 HTML / CSS
HTML5 FormData 方法介绍以及实现文件上传示例
2017/09/12 HTML / CSS
html5 Canvas画图教程(10)—把面拆成线条模拟出圆角矩形
2013/01/09 HTML / CSS
韩语专业本科生求职信
2013/10/01 职场文书
护理专业应届毕业生推荐信
2013/11/15 职场文书
初中考试作弊检讨书
2014/02/01 职场文书
拾金不昧锦旗标语
2014/06/27 职场文书
先进典型发言材料
2014/12/30 职场文书
JavaScript实现队列结构过程
2021/12/06 Javascript