如何使用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中wx将图标显示在右下角的脚本代码
Mar 08 Python
Python中用format函数格式化字符串的用法
Apr 08 Python
Python实现批量检测HTTP服务的状态
Oct 27 Python
你应该知道的python列表去重方法
Jan 17 Python
Python+Turtle动态绘制一棵树实例分享
Jan 16 Python
python写入并获取剪切板内容的实例
May 31 Python
python操作excel的方法
Aug 16 Python
Python面向对象程序设计类的多态用法详解
Apr 12 Python
python框架flask表单实现详解
Nov 04 Python
python add_argument()用法解析
Jan 29 Python
如何理解python对象
Jun 21 Python
完美解决Pycharm中matplotlib画图中文乱码问题
Jan 11 Python
教你用python控制安卓手机
Python数据分析入门之数据读取与存储
May 13 #Python
python执行js代码的方法
pytorch加载预训练模型与自己模型不匹配的解决方案
May 13 #Python
Python数据分析入门之教你怎么搭建环境
Pytorch 统计模型参数量的操作 param.numel()
May 13 #Python
Python机器学习算法之决策树算法的实现与优缺点
You might like
PHP与MySQL开发的8个技巧小结
2010/12/17 PHP
php中模拟POST传递数据的两种方法分享
2011/09/16 PHP
提高php运行速度的一些小技巧分享
2012/07/03 PHP
php inc文件使用的风险和注意事项
2013/11/12 PHP
php简单生成随机数的方法
2015/07/30 PHP
ThinkPHP在Cli模式下使用模板引擎的方法
2015/09/25 PHP
jQuery Ajax之$.get()方法和$.post()方法
2009/10/12 Javascript
简单的前端js+ajax 购物车框架(入门篇)
2011/10/29 Javascript
jquery特效 幻灯片效果示例代码
2013/07/16 Javascript
jquery动态导航插件dynamicNav用法实例分析
2015/09/06 Javascript
jQuery实现的Tab滑动选项卡及图片切换(多种效果)小结
2015/09/14 Javascript
AngularJS $injector 依赖注入详解
2016/09/14 Javascript
Vue.js教程之计算属性
2016/11/11 Javascript
Vue 固定头 固定列 点击表头可排序的表格组件
2016/11/25 Javascript
input输入密码变黑点密文的实现方法
2017/01/09 Javascript
angular 用拦截器统一处理http请求和响应的方法
2017/06/08 Javascript
jQuery实现点击DIV同时点击CheckBox,并为DIV上背景色的实例
2017/12/18 jQuery
如何在JavaScript中优雅的提取循环内数据详解
2019/03/04 Javascript
js实现盒子拖拽动画效果
2020/08/09 Javascript
在Windows8上的搭建Python和Django环境
2014/07/03 Python
Python实现的最近最少使用算法
2015/07/10 Python
CentOS 6.5中安装Python 3.6.2的方法步骤
2017/12/03 Python
python实现键盘输入的实操方法
2019/07/16 Python
利用Python产生加密表和解密表的实现方法
2019/10/15 Python
Python实现word2Vec model过程解析
2019/12/16 Python
python实现单目标、多目标、多尺度、自定义特征的KCF跟踪算法(实例代码)
2020/01/08 Python
解决windows下python3使用multiprocessing.Pool出现的问题
2020/04/08 Python
python实现密度聚类(模板代码+sklearn代码)
2020/04/27 Python
python语言是免费还是收费的?
2020/06/15 Python
PREMIUM-MALL法国:行李、箱包及配件在线
2019/05/30 全球购物
英语教师自荐信
2014/05/26 职场文书
体育教师求职信
2014/06/30 职场文书
学校党委副书记个人对照检查材料思想汇报
2014/09/28 职场文书
2014年村委会工作总结
2014/11/24 职场文书
Nginx同一个域名配置多个项目的实现方法
2021/03/31 Servers
用Python可视化新冠疫情数据
2022/01/18 Python