如何使用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 15 Python
python比较两个列表是否相等的方法
Jul 28 Python
Python爬虫框架Scrapy实例代码
Mar 04 Python
详解Django解决ajax跨域访问问题
Aug 24 Python
Python函数中不定长参数的写法
Feb 13 Python
numpy下的flatten()函数用法详解
May 27 Python
python 图片去噪的方法示例
Jul 09 Python
Python中变量的输入输出实例代码详解
Jul 28 Python
python实现通过flask和前端进行数据收发
Aug 22 Python
解决os.path.isdir() 判断文件夹却返回false的问题
Nov 29 Python
Python3 集合set入门基础
Feb 10 Python
使用python检查yaml配置文件是否符合要求
Apr 09 Python
教你用python控制安卓手机
Python数据分析入门之数据读取与存储
May 13 #Python
python执行js代码的方法
pytorch加载预训练模型与自己模型不匹配的解决方案
May 13 #Python
Python数据分析入门之教你怎么搭建环境
Pytorch 统计模型参数量的操作 param.numel()
May 13 #Python
Python机器学习算法之决策树算法的实现与优缺点
You might like
php strtotime 函数UNIX时间戳
2009/01/14 PHP
PHP跨时区(UTC时间)应用解决方案
2013/01/11 PHP
php实现自动获取生成文章主题关键词功能的深入分析
2013/06/03 PHP
PHP简单判断手机设备的方法
2016/08/23 PHP
PHP面向对象程序设计之多态性的应用示例
2018/12/19 PHP
php array_chunk()函数用法与注意事项
2019/07/12 PHP
php数组函数array_push()、array_pop()及array_shift()简单用法示例
2020/01/26 PHP
imgAreaSelect 中文文档帮助说明
2011/10/08 Javascript
使用Grunt.js管理你项目的应用说明
2013/04/24 Javascript
js判断背景图片是否加载成功使用img的width实现
2013/05/29 Javascript
Javascript表格翻页效果的具体实现
2013/10/05 Javascript
js拖动div 当鼠标移动时整个div也相应的移动
2013/11/21 Javascript
JS的参数传递示例介绍
2014/02/08 Javascript
说说AngularJS中的$parse和$eval的用法
2017/09/14 Javascript
vue axios整合使用全攻略
2018/05/24 Javascript
个人小程序接入支付解决方案
2019/05/23 Javascript
微信小程序语音同步智能识别的实现案例代码解析
2020/05/29 Javascript
Nodejs实现微信分账的示例代码
2021/01/19 NodeJs
[49:20]2014 DOTA2国际邀请赛中国区预选赛5.21 CIS VS TongFu
2014/05/22 DOTA
python之yield表达式学习
2014/09/02 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
2017/12/11 Python
分析python切片原理和方法
2017/12/19 Python
解决Pycharm中import时无法识别自己写的程序方法
2018/05/18 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
2019/04/03 Python
Python HTTP下载文件并显示下载进度条功能的实现
2020/04/02 Python
阻止移动设备(手机、pad)浏览器双击放大网页的方法
2014/06/03 HTML / CSS
详解快速开发基于 HTML5 网络拓扑图应用
2018/01/08 HTML / CSS
沙特阿拉伯排名第一的在线时尚购物应用程序:1Zillion
2020/08/08 全球购物
学习雷锋做美德少年寄语大全
2014/04/09 职场文书
五一活动标语
2014/06/30 职场文书
人事行政专员岗位职责
2014/07/23 职场文书
交通事故和解协议书
2015/01/27 职场文书
农业项目投资意向书
2015/05/09 职场文书
严以律己专题学习研讨会发言材料
2015/11/09 职场文书
Go语言基础知识点介绍
2021/07/04 Golang
uniapp引入支付宝原生扫码插件步骤详解
2022/07/23 Javascript